• Validate Binary Search Tree

Validate Binary Search Tree

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:
1. 2
2. / \
3. 1 3

Binary tree [2,1,3], return true.
Example 2:
1. 1
2. / \
3. 2 3

Binary tree [1,2,3], return false.
Solution:
1. /*
2. * Definition for a binary tree node.
3. * public class TreeNode {
4. * int val;
5. * TreeNode left;
6. * TreeNode right;
7. * TreeNode(int x) { val = x; }
8. * }
9.
/
10. public class Solution {
11. public boolean isValidBST(TreeNode root) {
12. return isValidBST(root, null, null);
13. }
14. 15. boolean isValidBST(TreeNode root, Integer min, Integer max) {
16. if (root == null)
17. return true;
18. 19. if (min != null && root.val <= min)
20. return false;
21. 22. if (max != null && root.val >= max)
23. return false;
24. 25. return isValidBST(root.left, min, root.val) && isValidBST(root.right, root.val, max);
26. }
27. }