此题我们我们应该先写出一个二叉搜索树来寻找规律。不难发现如果中序遍历该二叉搜索树,并将遍历结果存入一维数组,该数组的值将是递增的。 如下图所示:
讲明白了原理,直接上代码
public boolean isValidBST(TreeNode root) {
Deque<TreeNode> stack = new ArrayDeque<>();
//定义初始值尽可能的小
long pre = -Long.MAX_VALUE;
if(root == null) return true;
//中序遍历二叉树
while(root != null || !stack.isEmpty()) {
while(root != null) {
stack.push(root);
root=root.left;
}
root = stack.pop();
//若当前根节点的值小于上一个节点的值,则不满足要求,返回false
if(root.val <= pre) {
return false;
}
pre = root.val;
root = root.right;
}
//遍历完成,则返回true,满足要求
return true;
}