20240619 Finished
This commit is contained in:
		| @@ -152,4 +152,5 @@ mod p222_count_complete_tree_nodes; | ||||
| mod p199_binary_tree_right_side_view; | ||||
| mod p637_average_of_levels_in_binary_tree; | ||||
| mod p530_minimum_absolute_difference_in_bst; | ||||
| mod p230_kth_smallest_element_in_a_bst; | ||||
| mod p230_kth_smallest_element_in_a_bst; | ||||
| mod p98_validate_binary_search_tree; | ||||
							
								
								
									
										67
									
								
								src/problem/p98_validate_binary_search_tree.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								src/problem/p98_validate_binary_search_tree.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,67 @@ | ||||
| /** | ||||
|  * [98] Validate Binary Search Tree | ||||
|  */ | ||||
| pub struct Solution {} | ||||
|  | ||||
| use crate::util::tree::{TreeNode, to_tree}; | ||||
|  | ||||
| // submission codes start here | ||||
|  | ||||
| // Definition for a binary tree node. | ||||
| // #[derive(Debug, PartialEq, Eq)] | ||||
| // pub struct TreeNode { | ||||
| //   pub val: i32, | ||||
| //   pub left: Option<Rc<RefCell<TreeNode>>>, | ||||
| //   pub right: Option<Rc<RefCell<TreeNode>>>, | ||||
| // } | ||||
| // | ||||
| // impl TreeNode { | ||||
| //   #[inline] | ||||
| //   pub fn new(val: i32) -> Self { | ||||
| //     TreeNode { | ||||
| //       val, | ||||
| //       left: None, | ||||
| //       right: None | ||||
| //     } | ||||
| //   } | ||||
| // } | ||||
| use std::rc::Rc; | ||||
| use std::cell::RefCell; | ||||
| impl Solution { | ||||
|     fn inorder_iterate(node: &Rc<RefCell<TreeNode>>, array: &mut Vec<i32>) { | ||||
|         if let Some(left) = node.borrow().left.as_ref() { | ||||
|             Self::inorder_iterate(left, array); | ||||
|         }    | ||||
|         array.push(node.borrow().val); | ||||
|         if let Some(right) = node.borrow().right.as_ref() { | ||||
|             Self::inorder_iterate(right, array); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     pub fn is_valid_bst(root: Option<Rc<RefCell<TreeNode>>>) -> bool { | ||||
|         let mut array = vec![]; | ||||
|  | ||||
|         if let Some(root) = root { | ||||
|             Self::inorder_iterate(&root, &mut array); | ||||
|         } | ||||
|  | ||||
|         for i in 1..array.len() { | ||||
|             if array[i - 1] >= array[i] { | ||||
|                 return false; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         true | ||||
|     } | ||||
| } | ||||
|  | ||||
| // submission codes end | ||||
|  | ||||
| #[cfg(test)] | ||||
| mod tests { | ||||
|     use super::*; | ||||
|  | ||||
|     #[test] | ||||
|     fn test_98() { | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user