澄清二进制搜索树中的有序遍历

时间:2015-11-25 08:16:20

标签: java algorithm recursion tree

我正在学习Java中的树木,并且在我正在学习的书中遇到了一些令人困惑的界限。有序遍历的图表如下:

enter image description here

遍历(递归)的代码是:

private void inOrder(Node leftRoot) {
    if (localRoot != null) {
        inOrder(localRoot.leftChild);
        System.out.println(localRoot.iData + " ");
        inOrder(localRoot.rightChild);
    }
 }

我感到困惑的是:

  

现在我们回到inOrder(A),刚从A的左边回来   儿童。我们访问A,然后再次使用C作为参数调用inOrder(),   创建inOrder(C)。像inOrder(B),inOrder(C)没有孩子,所以   步骤1返回而不执行任何操作,步骤2访问C,步骤3返回   没有动作。 inOrder(B)现在返回inOrder(A)

     

然而,   inOrder(A)现在完成了,所以它返回并且整个遍历都是   完成。 访问节点的顺序是A,B,C ;他们   已被访问过。在二叉搜索树中,这将是   上升键的顺序。

我突出了我被困住的部分。首先,我认为在第三步中,inOrder(C)[而不是inOrder(B)]返回inOrder(A)。第二,访问节点的顺序应该是B - > A - > C.

请帮帮我!

1 个答案:

答案 0 :(得分:0)

是的,你在两个方面都是正确的。这些似乎是拼写错误,或勘误表

作为旁注,我认识到你帖子中的图表风格,因为我几年前从同一本书(Lafore)学习了数据结构。不幸的是,他似乎并没有在任何地方发布的勘误列表,这是令人失望的,因为大多数作者都努力做到这一点。

相关问题