AlgoMaster Logo

Validate Binary Search Tree

tree=[2, 1, 3]
1public boolean isValidBST(TreeNode root) {
2    return validate(root, Long.MIN_VALUE, Long.MAX_VALUE);
3}
4
5private boolean validate(TreeNode node, long minVal, long maxVal) {
6    if (node == null) {
7        return true;
8    }
9
10    // Check if current node violates BST property
11    if (node.val <= minVal || node.val >= maxVal) {
12        return false;
13    }
14
15    // Recursively validate left and right subtrees
16    boolean leftValid = validate(node.left, minVal, node.val);
17    if (!leftValid) {
18        return false;
19    }
20
21    boolean rightValid = validate(node.right, node.val, maxVal);
22    if (!rightValid) {
23        return false;
24    }
25
26    return true;
27}
0 / 18
213visitedcurrentunvisited