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.
Idea: The middle order is arranged in a sorted array (the array element is incremented at a time), and the array cannot have duplicate elements.
The code is as follows:
1 /**2 * Definition for a binary tree node.3 * public class TreeNode {4 * int val;5 * TreeNode left;6 * TreeNode right;7 * TreeNode (int x) {val = x;}8 * }9 */Ten Public classSolution { One Public BooleanIsvalidbst (TreeNode root) { A - if(root==NULL|| (root.left==NULL&&root.right==NULL)) - return true; theArraylist<integer> list=Parentandson (root); - int[] nums=New int[List.size ()]; - int[] nums1=New int[List.size ()]; - for(intI=0;i<list.size (); i++) + { -nums[i]=List.get (i); +nums1[i]=List.get (i); A } at Arrays.sort (nums); - - if(nums[0]!=nums1[0]) - return false; - for(inti=1;i<nums.length;i++) - { in if(nums1[i]!=nums[i]| | Nums[i]==nums[i-1]) - return false; to + } - return true; the } * PublicArraylist<integer>Parentandson (TreeNode root) { $Arraylist<integer> list=NewArraylist<>();Panax Notoginseng if(root.left!=NULL) - List.addall (Parentandson (Root.left)); the + List.add (root.val); A the if(root.right!=NULL) + List.addall (Parentandson (root.right)); - returnlist; $ } $}
98. Validate Binary Search Tree