leetcode 98. 验证二叉搜索树

题意

判断一个二叉树是不是二叉搜索树

思路

每当我们进入一个点时 , 需要思考该点的范围是否在开区间内

考虑已经知道其父节点的区间范围 , 那么如果是左孩子 , 将其上界减小 ; 如果是右孩子 , 将其下界提高

代码

class Solution {
public:
    const long long int INF = 1e10+10;
    bool dfs(TreeNode* root,long long  int upper,long long int lower)
    {
        if(!(root->val <upper && root->val > lower))
            return false;
        if(root->left)
        {
            if(!dfs(root->left,root->val,lower))
                return false;
        }
        if(root->right)
        {
            if(!dfs(root->right,upper,root->val))
                return false;
        }
        return true;
    }
    bool isValidBST(TreeNode* root) {
        if(root == nullptr)
            return true;
       return dfs(root,INF,-INF);
    }
};
posted @ 2025-03-27 23:41  Guaninf  阅读(11)  评论(0)    收藏  举报