Post

lc.98 验证二叉搜索树

lc.98 验证二叉搜索树

描述

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。

有效 二叉搜索树定义如下:

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

思路–中序遍历

![[Pasted image 20241128213311.png300]]

观察可知,如上图,中序遍历的访问顺序 刚好是 二叉搜索树从小到大递增的顺序,所以我们把中序遍历到的结点值都添加到一个数组里,判断这个数组是不是严格单调递增的,就知道这棵树是不是二叉搜索树。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Solution {
public:
    bool isValidBST(TreeNode* root){
        vector<int>vec;
        Inorder(root,vec);

        bool is=true;
        for(int i=1;i<vec.size();i++){
            if(vec[i]<=vec[i-1]){
                is=false;
            }
        }
        return is;
    }

    void Inorder(TreeNode* root,vector<int>&vec){
        if(root){

        Inorder(root->left,vec);
        vec.push_back(root->val);
        Inorder(root->right,vec);

        }
    }
};
This post is licensed under CC BY 4.0 by the author.