【LeetCode 40】98.验证二叉搜索树

【LeetCode 40】98.验证二叉搜索树

一、题意

二、思考过程

一棵二叉搜索树的特征如下:

  • 节点的左子树只包含小于当前节点的数
  • 节点的右子树只包含大于当前节点的数
  • 所有左子树和右子树自身必须也是二叉搜索树

我们要比较的就是左子树所有节点小于中间节点,右子树所有节点大于中间节点。

验证二叉搜索树就是相当于判断一个序列是不是递增,是不是中序遍历。

class Solution {
    
    
public:
    TreeNode *pre=NULL;//记录前一个节点
    bool isValidBST(TreeNode* root) {
    
    
        if(root==NULL) return true;//空树是二叉排序树
        bool left=isValidBST(root->left);

// 访问当前节点:如果当前节点小于等于中序遍历的前一个节点,说明不满足BST,返回 false;否则继续遍历。
        if (pre!=NULL && root->val <= pre->val)  return false;
        pre=root;//记录前一个节点

        bool right=isValidBST(root->right);
        return left&&right;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_43891901/article/details/122897879