只需检验二叉树的中序遍历是不是递增的就可以了。
public
boolean
isValidBST(TreeNode root) {
if (root == null ) return true ;
Stack <TreeNode> stack = new Stack <>();
TreeNode pre = null ;
while (root != null || ! stack .isEmpty()) {
while (root != null ) {
stack .push(root);
root = root.left;
}
root = stack .pop();
if (pre != null && root.val <= pre.val) return false ;
pre = root;
root = root.right;
}
return true ;
}
if (root == null ) return true ;
Stack <TreeNode> stack = new Stack <>();
TreeNode pre = null ;
while (root != null || ! stack .isEmpty()) {
while (root != null ) {
stack .push(root);
root = root.left;
}
root = stack .pop();
if (pre != null && root.val <= pre.val) return false ;
pre = root;
root = root.right;
}
return true ;
}