LeetCode-c++验证二叉搜索树(题98)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/glw0223/article/details/88609034

题面

给定一个二叉树,判断其是否是一个有效的二叉搜索树。

假设一个二叉搜索树具有如下特征:

节点的左子树只包含小于当前节点的数。
节点的右子树只包含大于当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
示例 1:
在这里插入图片描述
示例 2:
在这里插入图片描述

源码

  • 递归方式,还是要想清楚递归结束的条件
  • left和right一直是null,只是做个占位,是在最外层传入的
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool isValidBST(TreeNode* root) 
    {
        return _isVaildBST(root, nullptr, nullptr);
    }
private:
    bool _isVaildBST(TreeNode* root, TreeNode* left, TreeNode* right)
    {
        if (root == nullptr){
            return true;
        }
        if (left and left->val >= root->val){
            return false;
        } 
        if (right and right->val <= root->val){
            return false;
        } 
        return _isVaildBST(root->left, left, root) && _isVaildBST(root->right, root, right);
    }
};

猜你喜欢

转载自blog.csdn.net/glw0223/article/details/88609034
今日推荐