我在Java学习树木,在我正在学习的书中遇到了一些令人困惑的字眼。顺序遍历的图表如下:
java - 澄清二叉搜索树中的有序遍历-LMLPHP
遍历(递归)的代码是:

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

我困惑的是:
现在我们回到了inorder(a),刚刚从a的左边返回
孩子。我们访问a,然后再次调用inorder(),用c作为参数,
创建顺序(C)和inorder(b)一样,inorder(c)没有子级,所以
步骤1返回,不执行任何操作,步骤2访问c,步骤3返回
没有行动。inorder(b)现在返回到inorder(a)。
然而,
inorder(a)现在完成了,所以它返回并且整个遍历是
完成。访问节点的顺序是A、B、C;它们
已按顺序访问。在二叉搜索树中
升序键的顺序。
我已经强调了我所处的位置首先,我认为在第三步中,in order(c)[而不是inorder(b)]返回到inorder(a),其次,访问节点的顺序应该是b->a->c。
请帮帮我!

最佳答案

是的,你在这两方面都是对的。这些似乎是错别字或勘误表。
作为补充说明,我在你的文章中认识到了图表样式,因为我多年前从同一本书(lafore)中学习了数据结构。不幸的是,他似乎没有在任何地方发表勘误表,这是令人失望的,因为大多数作者确实努力做到这一点。

关于java - 澄清二叉搜索树中的有序遍历,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33911426/

10-09 08:27