public boolean isValidBST(TreeNode root) {
//定义一个栈
Deque<TreeNode> deque = new LinkedList<>();
//比较的值(第一次循环时小于取出的第一节点的值)
double inorder = -Double.MAX_VALUE;
//栈不为空当前根节点的值不等于null
while (!deque.isEmpty() || root != null) {
//当当前根节点的值不为找他的左孩子把节点添加到栈里
while (root != null) {
deque.push(root);
root = root.left;
}
//取出栈顶
root = deque.pop();
//小于则不是升序
if (root.val <= inorder) {
return false;
}
//循环一次将更新inorder的值
inorder = root.val;
root = root.right;
}
return true;
}