二叉树。叶节点的顺序(树遍历)

时间:2013-11-05 16:00:55

标签: tree

这是一个相当简单的问题,我注意到当我代表树时,无论我采用哪种方式(按顺序,按顺序,预订),叶子总是以相同的顺序出现,从左到右。

我只是想知道为什么,这有什么原因吗?

我刚开始研究它们并想出了这个。

编辑:

我有一棵这样的树:

        A
    B       C
  D       E   F

叶节点是:D,E和F

预购顺序为:A,B,D,C,E,F

有序是:D,B,A,E,C,F

后序是:D,B,E,F,C,A

无论我选择哪个顺序,叶子节点总是从左到右显示。问题是为什么会这样。给这些节点的用途是什么,它们按此顺序出现。

我一直在读这些树被用作递归过程的表示,所以我的猜测是正确的叶节点是在左叶节点发生之后出现的情况,这就是为什么它们在以后出现在任何表示中的原因上?

2 个答案:

答案 0 :(得分:1)

因为无论您将节点放在哪个位置,您总是在正确的孩子面前访问左侧孩子。但是,我不完全确定你的观察结果必然总是如此,如果你的叶子与根部的距离不是很远 - 我可能错了,不过......

答案 1 :(得分:1)

所有这些遍历:预购,顺序和后序遍历是深度优先遍历。在所有这些中,左节点在右节点(仅根振荡)之前被处理:

Preorder :  <ROOT>  LEFT   RIGHT
Inorder  :  LEFT   <ROOT>  RIGHT
Postorder:  LEFT    RIGHT <ROOT>

在每次这些遍历中,我们最终都是从左向右移动。

因此,叶子节点总是以相同的顺序依次出现 - 在所有三次遍历中。

上述解决方案中有一点关于离根部不同距离的叶子。我根据以下示例对其进行了验证:

enter image description here

PreOrder - 8, 5, 9, 7, 1, 12, 2, 4, 11, 3
InOrder - 9, 5, 1, 7, 2, 12, 8, 4, 3, 11
PostOrder - 9, 1, 2, 12, 7, 5, 3, 11, 4, 8 

即使在这种情况下,测序仍然适用

目的:它看起来更像是左右模式的结果。