1.问题

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

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

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

示例 1:

输入:root = [2,1,3]
输出:true
2.思路

        二叉搜索树使用中序遍历得到的是一组有序的数组,通过判断这个数组是否有序即可。

3.代码实现
   vector<int> record;
private:
    void traversal(TreeNode* root)
    {
        if(root==nullptr) return;
        traversal(root->left);
        record.push_back(root->val);
        traversal(root->right);
    }
public:
    bool isValidBST(TreeNode* root) {
        
        if(root==nullptr) return false;
        traversal(root);
        for(int i=1;i<record.size();i++)
        {
            if(record[i]<=record[i-1]) return false;
        }

        return true;
    }

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐