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}| Variable | Value |
|---|---|
root | "Node(2)" |
| Depth | Function Call |
|---|---|
| 1 | isValidBST(Node(2)) |
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}