98. Validate Binary Search Tree

98. Validate Binary Search Tree
Medium
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 be binary search trees.

Example 1:
    2
   / \
  1   3

Input: [2,1,3]
Output: true
Example 2:
    5
   / \
  1   4
     / \
    3   6

Input: [5,1,4,null,null,3,6]
Output: false
Explanation: The root node's value is 5 but its right child's value is 4.
Solution
Top-down
use max and min two arguements to limit the boundary of subtree. min< subtree中所有元素 < max.
1. min < node.val < max
2. min < left subtree < node.val
3. node.val < right subtree < max


class Solution {
    public boolean isValidBST(TreeNode root) {
        return isValidNode(root,null,null);
    }
    
    public boolean isValidNode(TreeNode root, Integer max, Integer min){
        if(root == null) return true;
        if((max == null || root.val < max)
            && (min == null || root.val > min)){
                return isValidNode(root.left, root.val, min)
                    && isValidNode(root.right, max, root.val);
            }else{
                return false;
            }
    }
}

Comments

Popular posts from this blog

MockInterview:785. Is Graph Bipartite?

geeksforgeeks:findFind zeroes to be flipped so that number of consecutive 1’s is maximized

94.Binary Tree Inorder Traversal