Data structures 我不明白为什么这不是一个有效的BST,有人能解释一下吗?

Data structures 我不明白为什么这不是一个有效的BST,有人能解释一下吗?,data-structures,graph,tree,binary-search-tree,dsa,Data Structures,Graph,Tree,Binary Search Tree,Dsa,嗨,我是一个初学者,正在学习DSA。此程序用于验证bst。在附加的图像中,所有左侧节点都小于其根节点,所有右侧节点都大于其根节点。但是根据编译器(leet代码),预期的输出是错误的,我不明白为什么。有人能给我解释一下吗。也请在下面找到我的代码 class Solution { public boolean validatebst(TreeNode root){ System.out.println("Traversing "+ root.val);

嗨,我是一个初学者,正在学习DSA。此程序用于验证bst。在附加的图像中,所有左侧节点都小于其根节点,所有右侧节点都大于其根节点。但是根据编译器(leet代码),预期的输出是错误的,我不明白为什么。有人能给我解释一下吗。也请在下面找到我的代码


class Solution {
    public boolean validatebst(TreeNode root){
        System.out.println("Traversing "+ root.val);
        if(root.left !=null && root.left.val > root.val)
            return false;
        else if(root.right != null && root.right.val < root.val){
            return false;
        }
        return true;
    }
    public boolean checkbst(TreeNode root){
        if(root == null)
            return true;
        if(!this.checkbst(root.left))
            return false;
        if(!this.validatebst(root))
            return false;
        if(!this.checkbst(root.right))
            return false;
        return true;
    }
    public boolean isValidBST(TreeNode root) {
        if(this.checkbst(root))
            return true;
        return false;
        
    }
}

类解决方案{
公共布尔validatebst(树节点根){
System.out.println(“遍历”+root.val);
if(root.left!=null&&root.left.val>root.val)
返回false;
else if(root.right!=null&&root.right.val
树无效,因为右侧的叶小于根。即使它位于其父对象的左侧(这是正确的),根右侧的所有内容都必须大于根


此链接中的示例3解释了,希望这有帮助:)

哦,好的。知道了。这一联系清楚地解释了我的怀疑。谢谢