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:
2
/ \ 1 3
Binary tree [2,1,3], return true.
Example 2:
1
/ \ 2 3
Binary tree [1,2,3], return false.
Solution
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public boolean isValidBST(TreeNode root) {
List<Integer> result = getInOrderSequence(root);
for(int i = 1; i < result.size(); i ++) {
if (result.get(i-1) >= result.get(i)) {
return false;
}
}
return true;
}
public void inOrder(TreeNode node, List<Integer> result) {
if (node == null) {
return;
}
inOrder(node.left, result);
result.add(node.val);
inOrder(node.right, result);
}
public List<Integer> getInOrderSequence(TreeNode node) {
List<Integer> result = new ArrayList<>();
inOrder(node, result);
return result;
}
}