98. 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.
思路:中序遍历,吊炸天
public class Solution {
public boolean isValidBST(TreeNode root) {
Stack<TreeNode> stack = new Stack<TreeNode>();
TreeNode curr = root;
TreeNode prev = null;
while (!stack.isEmpty()||curr!=null){
if (curr!=null){
stack.push(curr);
curr = curr.left;
}else{
TreeNode p = stack.pop();
if (prev != null && p.val <= prev.val) {
return false ;
}
prev = p;
curr = p.right;
}
}
return true;
}
}