为什么通过根,左和右遍历树称为预排序?难道不是有序的,因为根始终是第一个?
我之所以这么称呼它没有意义,因为根始终是第一个元素。
答案 0 :(得分:2)
前缀是指何时应放置根节点的内容。
鉴于此树,您可以用多种方式表示它:
[41, 20, 11, 29, 32, 65, 50, 91, 72, 99]
^ -------------- ------------------
| | |
| | |-----Right sub-tree
| |
| |----Left sub-tree
|
|------ Root of the tree
在左侧和右侧子树子列表中,保留了预订。
[11, 20, 29, 32, 41, 50, 65, 72, 91, 99]
-------------- | ------------------
| | |
| | |------- Right sub-tree
| |
| |---- Root of the tree
|
|----- Left sub-tree
现在,列表的第一部分表示左侧的子树,将根放在其后,最后是右侧的子树。在这里,顺序也保留在左右子树子列表中。
顺序遍历可以看作是从左到右扫描。
[11, 32, 29, 20, 50, 72, 99, 91, 65, 41]
-------------- ------------------ |
| | |---- Root of the tree
| |
| |----- Right sub-tree
|
|------ Left sub-tree
与其他字符一样,根字符在末尾,但左和右子列表保留相同的 postorder 属性。
另外,其他可能的遍历可以
[41, 20, 65, 11, 29, 50, 91, 32, 72, 99]
| ------ -------------- ----------
| | | |-----Level 3
| | |
| | |----- Level 2
| |
| |------ Level 1
|
|----- Level 0 (aka, the root of the tree)
答案 1 :(得分:1)
我们总是有一个限制,即在访问右孩子之前先拜访左孩子。
主要区别是根在哪里。
如果根是两个孩子的之前,我们称其为预购。(Root,Left,Right)
如果根是两个孩子的之后,我们称其为后置订单。 (左,右,根)
如果根在两个子节点之间,则将其按顺序命名。 (左,根,右)
答案 2 :(得分:0)
考虑一下这棵简单的树:
A
/ \
B C
预订遍历:ABC
。
该术语包含单词pre
。 pre
表示之前。因此,根在任何子代之前。请注意,A
在B
和C
之前
后处理遍历:BCA
该术语包含单词post
。 post
表示之后。因此,根源在于其任何子代。请注意,A
在B
和C
之后
遍历顺序:BAC
该术语包含单词In
。 In
表示内部(中间)。因此,根源位于其子代中间。请注意,A
在B
和C
之间