LeetCode 验证二叉搜索树

        //(lower,upper)这是一个不断更新维护的区间,为什么要更新维护
        //为了保证二叉搜索树的正确性,需要根节点左子树的所有值都小于根节点,右子树的所有节点的值呀大于根节点
        //lower维护的是当前所遍历到的节点中所能取到的最小值,upper是最大值

class Solution {
public:
    bool isValidBST(TreeNode* root) {
        return Recursion(root, LONG_MIN, LONG_MAX);
    }
    bool  Recursion(TreeNode* leaves, long long lower, long long upper)
    {
        //(lower,upper)这是一个不断更新维护的区间,为什么要更新维护
        //为了保证二叉搜索树的正确性,需要根节点左子树的所有值都小于根节点,右子树的所有节点的值呀大于根节点
        //lower维护的是当前所遍历到的节点中所能取到的最小值,upper是最大值
        if (leaves == nullptr)
        {
            return true;//什么时候写true?
        }
        if (leaves->val <= lower || leaves->val >= upper)//这一步检查,leaves节点得值是否在(lower,upper)的区间范围内
        {
            return false;
        }
        return Recursion(leaves->left, lower, leaves->val) && Recursion(leaves->right, leaves->val, upper);
        // Recursion(leaves->left, lower, leaves->val) 这个是往左子树递归,这里更新了(lower,upper)区间的上界
        //Recursion(leaves->right, leaves->val, upper)这个事往右子树递归,更新了(lower,upper)区间的下界
    }
};

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值