【问题标题】:Validate Binary Search Tree-1验证二叉搜索 Tree-1
【发布时间】:2021-06-01 16:04:12
【问题描述】:

第二个例子我的解决方案失败了,我不知道为什么,请解释一下。

问题来了:

给定一棵二叉树,确定它是否是有效的二叉搜索树 (BST)。

假设 BST 定义如下:

节点的左子树只包含键小于节点键的节点。节点的右子树只包含键大于节点键的节点。左右子树也必须是二叉搜索树。

示例 1:

                 2
                / \
               1   3

输入:[2,1,3]

输出:真

示例 2:

                 5
                / \
               1   4
                  / \
                 3   6

输入:[5,1,4,null,null,3,6]

输出:假

解释:根节点的值为5,而其右孩子的值为4。

  class Solution {
public:
    bool util(TreeNode*root,int minv=INT_MIN,int maxv=INT_MAX)
    { if(root==NULL)
        return true;
     if((root->val >= minv and root->val <= maxv) and 
util(root->left,minv,root->val)and util(root->right,root->val,maxv));
         return true;
 
     return false;
    }
    bool isValidBST(TreeNode* root) {
        return util(root);
    }
};

【问题讨论】:

    标签: binary-search-tree


    【解决方案1】:

    我看到的一件事是,在二叉搜索树中,节点右侧的所有元素都必须大于该节点。您的解决方案因 4

    编辑:在交换之后它可能符合二叉树的定义,但它不是一个好的二叉树,右子树中有随机 3。不完全二叉搜索树不需要是平衡树。如果您仍然感到困惑,将您的一组数字插入到类似 VisuAlgo (https://visualgo.net/bn/bst) 中可能有助于展示二叉搜索树与该数据的外观。

    【讨论】:

    • 我只问为什么它在 4val > root->right->val so return false thn 为什么它给出错误的声明
    猜你喜欢
    • 1970-01-01
    • 2021-10-01
    • 2010-10-04
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    相关资源
    最近更新 更多