Java 二叉树搜索顺序左侧不起作用



我正在尝试确认搜索树是否遵循排序规则(左侧为较小的数字,右侧为较大的数字)。这对右侧工作正常(递归),但左侧关闭。

当树看起来像这样时:

           100                 
     50            150
  55   75       125   175

如果我打印输出,我可以看到它检查 50 <100 和 150> 100,然后它向下移动并检查 125 <150 和 175> 150。它检查 125 和 175,但随后跳到 55 和 75,并且从未比较 55 <50(假)和 75> 50。

有人可以解释一下我做错了什么吗?

    public boolean isSearchTree(){
    boolean result = true;
    if (left != null) result = left.isSearchTree();
    if (right != null) result = right.isSearchTree();
    if (left != null && left.value >= value ){
        return false;
    } 
    if (right != null && right.value <= value ){
        return false;
    }
    return result;
}

您在此处覆盖左侧树中的result

if (right != null) result = right.isSearchTree();

创建快捷方式:

if (!left.isSearchTree()) {
  return false;
}
if (!right.isSearchTree()) {
  return false;
}
if (left != null && left.value >= value ){
  return false;
} 
if (right != null && right.value <= value ){
  return false;
}
return true;

最新更新