Given a binary tree, determine if it is a valid binary search tree (BST).
Assume a BST is defined as follows:
- The left subtree of a node contains only nodes with keys less than the node ' s key.
- The right subtree of a node contains only nodes with keys greater than the node ' s key.
- Both the left and right subtrees must also is binary search trees.
Example 1:
2 / 1 3
Binary Tree [2,1,3] , return True.
Example 2:
1 / 2 3
Binary tree [1,2,3] , return false.
Determine if a tree is a two-fork search tree.
The range can be determined. The main problem is that it appears at the maximum value of int, near the minimum value.
/*** Definition for a binary tree node. * public class TreeNode {* int val; * TreeNode left; * TreeNode rig Ht * TreeNode (int x) {val = x;} }*/ Public classSolution {intFlag1 = 0; intFlag2 = 0; Public BooleanIsvalidbst (TreeNode root) {returnIsbst (Root,integer.max_value,integer.min_value); } Public BooleanIsbst (TreeNode root,intMaxintmin) { if(Root = =NULL ) return true; if(Root.val = = Integer.max_value && MAX = =root.val) { if(Flag1 = = 0) {Flag1= 1; returnIsbst (Root.right,max,root.val) &&Isbst (root.left,root.val,min); } Else return false; } if(Root.val = = Integer.min_value && MIN = =root.val) { if(Flag2 = = 0) {Flag2= 1; returnIsbst (Root.right,max,root.val) &&Isbst (root.left,root.val,min); } Else return false; } if(Root.val <=min | | root.val >=max)return false; returnIsbst (Root.right,max,root.val) &&Isbst (root.left,root.val,min); }}
So you can optimize it a little bit.
/*** Definition for a binary tree node. * public class TreeNode {* int val; * TreeNode left; * TreeNode rig Ht * TreeNode (int x) {val = x;} }*/ Public classSolution { Public BooleanIsvalidbst (TreeNode root) {returnDFS (Root, (Long) (Integer.min_value)-1, (Long) (Integer.max_value) +1); } Private BooleanDFS (TreeNode root,LongGtLongLT) { if(Root = =NULL)return true; if(root.val >= lt | | root.val <= GT)return false; returnDFS (root.left, GT, Root.val) &&dfs (root.right, root.val, lt); }}
Leetcode 98 Validate Binary Search Tree-----java