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.
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
Post a Comment