题解 | 判断是不是二叉搜索树

判断是不是二叉搜索树

https://www.nowcoder.com/practice/a69242b39baf45dea217815c7dedb52b

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 *	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 * };
 */

#include <climits>
class Solution {
public:
    /**
        判断是不是搜索二叉树,深度优先搜索-》比较左子树要小,右子树要大-》但是不能超过根节点作为子树的性质,左子树不能小于根节点作为右子树的父节点的值,依次类推,甚至更上层的树-》直接在深度优先搜索中传递其限制条件,以及更新限制,没有则是true
     */
    bool df(TreeNode* root, int min_val, int max_val){
        if(root == nullptr)return true;

        return root->val < max_val && root->val > min_val && df(root->left, min_val, root->val) && df(root->right, root->val, max_val);
    }

    bool isValidBST(TreeNode* root) {

        return df(root, INT_MIN, INT_MAX);
    }
};

全部评论

相关推荐

鲸鸿:实习协议不用管签多久,要走的时候提前三天说就可以了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务