验证二叉搜索树
中序遍历升序
递归
设置一个区间(lower, upper)
在遍历左子树时将upper设为根节点的值
在遍历右子树时将lower设为根节点的值
那么左子树不能大于根节点, 即不能小于upper, 右子树不能小于根节点, 即不能小于lower
class Solution {
public boolean isValidBST(TreeNode root) {
// val的范围是int, 注意加L 默认是int类型会溢出
return recur(root, Integer.MIN_VALUE - 1L, Integer.MAX_VALUE + 1L);
}
public boolean recur(TreeNode root, long lower, long upper) {
if(root == null)
return true;
if(root.val <= lower || root.val >= upper)
return false;
// 左子树都小于根节点 将upper设为根节点
// 右子树都大于根节点 将lower设为根节点
return recur(root.left, lower, root.val) && recur(root.right, root.val, upper);
}
}
本文来自博客园,作者:brbrbr,转载请注明原文链接:https://www.cnblogs.com/brbrbr/p/15881479.html

浙公网安备 33010602011771号