繁体   English   中英

是什么让树遍历预订或有序?

[英]What makes a tree traversal pre-order or in-order?

为什么树通过根遍历,左右称为预订? 不应该是有序的,因为根始终是第一个?

对我来说,为什么以这种方式调用它是没有意义的,因为根始终是第一个元素。

前缀是指所述根节点的内容应放置到。

在此输入图像描述

鉴于此树,您可以通过各种方式表示它:

  • 预购首先被放置(当时的孩子),所以下面的列表将如下:
[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

现在,列表的第一部分代表左子树,根放在后面,最后是右子树。 在这里, inorder也保留在左右子树的子列表中。

有序遍历可以看作是从左到右的扫描。

  • 下订单孩子先分析,然后是孩子,最后是
[11, 32, 29, 20, 50, 72, 99, 91, 65, 41]
 --------------  ------------------  |
       |                 |           |---- Root of the tree
       |                 |        
       |                 |----- Right sub-tree
       | 
       |------ Left sub-tree

与其他相同,root在最后,但左右子列表保持相同的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)

我们总是有限制,在正确的孩子面前访问左孩子。

主要区别在于根源在哪里。

  • 如果根两个孩子之前 ,我们称之为预订。(Root,Left,Right)

  • 如果根两个孩子之后,我们称之为后序。 (左,右,根)

  • 如果根位于两个孩子之间,我们称之为有序。 (左,根,右)

考虑这个简单的树:

  A
 /  \
B    C

预订遍历ABC

该术语包含单词pre pre意味着。 因此根源在于它的任何一个孩子。 注意ABC之前

邮政订单遍历BCA

该术语包含post一词。 post意味着之后。 所以根源是它的任何一个孩子。 注意ABC

顺序遍历BAC

该术语包含单词In In里面(中间)。 所以根源在其子女的中间。 注意ABC之间

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM