这是一个相当简单的问题,我注意到当我代表树时,无论我采用哪种方式(按顺序,按顺序,预订),叶子总是以相同的顺序出现,从左到右。
我只是想知道为什么,这有什么原因吗?
我刚开始研究它们并想出了这个。
编辑:
我有一棵这样的树:
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
无论我选择哪个顺序,叶子节点总是从左到右显示。问题是为什么会这样。给这些节点的用途是什么,它们按此顺序出现。
我一直在读这些树被用作递归过程的表示,所以我的猜测是正确的叶节点是在左叶节点发生之后出现的情况,这就是为什么它们在以后出现在任何表示中的原因上?
答案 0 :(得分:1)
因为无论您将节点放在哪个位置,您总是在正确的孩子面前访问左侧孩子。但是,我不完全确定你的观察结果必然总是如此,如果你的叶子与根部的距离不是很远 - 我可能错了,不过......
答案 1 :(得分:1)
所有这些遍历:预购,顺序和后序遍历是深度优先遍历。在所有这些中,左节点在右节点(仅根振荡)之前被处理:
Preorder : <ROOT> LEFT RIGHT
Inorder : LEFT <ROOT> RIGHT
Postorder: LEFT RIGHT <ROOT>
在每次这些遍历中,我们最终都是从左向右移动。
因此,叶子节点总是以相同的顺序依次出现 - 在所有三次遍历中。
上述解决方案中有一点关于离根部不同距离的叶子。我根据以下示例对其进行了验证:
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
即使在这种情况下,测序仍然适用
目的:它看起来更像是左右模式的结果。