L98. Validate Binary Search Tree

Problem:

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

Solution:

  • binary search: left always less than root, right always larger than root.

public boolean isValidBST(TreeNode root) {
    return helper(root,null,null);  
}
private boolean helper(TreeNode root, TreeNode min, TreeNode max){
    if(root == null) return true;
    if(min != null && root.val <= min.val || max != null && root.val >= max.val) return false;
    return helper(root.left, min, root) && helper(root.right, root, max);
}

Last updated

Was this helpful?