【发布时间】:2021-03-25 02:13:20
【问题描述】:
我试图了解在 Java 中实现二叉搜索树中序遍历的成熟方法是如何运作的。
我得到以下代码:
public void inorder() {
if (!this.isEmpty()) {
this.getLeft().inorder();
System.out.print(this.getValue());
this.getRight().inorder();
}
}
isEmpty()返回当前Node是否为null,getValue()返回当前节点的值,getLeft()和getRight()分别返回左右后继节点。
我的问题是,我不明白如何使用此代码处理遍历。我已经在一张纸上可视化了我的想法链供你们查看,圆圈是节点,黑色方块是空节点,而被包围的节点是当前(this)对象。当我遵循伪代码时,我会在最后到达一个空节点并遇到递归死胡同。我也完全不明白一旦我们已经将子树节点设置为当前的 this 对象,代码如何能够回到树层次结构中。
我是不是想错了,如果是这样,有人可以帮助我理解正确的做法吗?该代码有效,但我真的需要了解它是如何实现的。任何帮助都将非常感谢
【问题讨论】:
-
您认为在“null”节点上进行调用后会发生什么?
-
我的看法是该方法完全结束了,因为我们只有在当前节点不为空时才进入 if-case...