java - 如何检查给定的 BST 是否有效?

标签 java algorithm data-structures tree binary-search-tree

<分区>

我正在尝试检查给定的二叉树是否为二叉搜索树。我想要做的是执行二叉树的中序遍历并将当前元素与前一个元素进行比较。如果当前元素更大,我们继续并进一步检查给定的树是否无效。

int prev=0;
public int isValidBST(TreeNode A) {
    if(A==null)
    return 1;
    isValidBST(A.left);
  //  System.out.println("val "+A.val);
   if(A.val<=prev)
   return 0;
   // else if(A!=null){
    prev=A.val;

    //System.out.println("prev "+prev);
    isValidBST(A.right);
    if(isValidBST(A.right)==1&&isValidBST(A.left)==1)
    return 1;
    return 0;
}

这就是我编写的代码。我在这里做错了什么?

最佳答案

每个子树只有一个递归调用!使用 boolean 值!

int prev=0;
public boolean isValidBST(TreeNode A) {
    if( A == null ) return true;
    if( ! isValidBST(A.left) ) return false;
    if( A.val <= prev ) return false;
    prev = A.val;
    if( ! isValidBST(A.right) ) return false;
    return true;
}

关于java - 如何检查给定的 BST 是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48418737/

相关文章:

java - Spring REST( Jersey )与 ManyToOne 关系

java - 无法响应 Java 中的非本地套接字

python - 如何使用for循环调整进入层的参数?

r - R中多个二项式随机数的模拟

data-structures - 表的数据结构?

java - 是否有类似 C 的方法从 Java 中的枚举中获取项目编号?

c# - 处理 list 需要太多时间

algorithm - MinHeap删除理解

java - 将一个变量用作数据类型不同但名称相同的另一个变量

JavaWebStart 以及图像和文件等资源