Validate Binary Search Tree
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 keysLessThe node's key.
- The right subtree of a node contains only nodes with keysGreaterThe node's key.
- Both the left and right Subtrees must also be binary search trees.
Algorithm ideas:
Train of Thought 1: Find the sequential traversal sequence and determine whether it is actually an incremental sequence. The spatial complexity is O (n)
Idea 2: binary classification. The upper and lower boundaries of each vertex are definite.
The Code is as follows:
1 public class Solution { 2 public boolean isValidBST(TreeNode root) { 3 if(root == null || (root.left == null && root.right == null)) return true; 4 return isValid(root, Integer.MAX_VALUE, Integer.MIN_VALUE); 5 } 6 private boolean isValid(TreeNode root,int biggest,int smallest){ 7 if(root == null ) return true; 8 if(root.val >= biggest || root.val <= smallest) return false; 9 else 10 return isValid(root.left, root.val, smallest) && isValid(root.right, biggest, root.val);11 }12 }