【问题标题】:Data Structures: Binary tree traversal数据结构:二叉树遍历
【发布时间】:2020-02-29 01:15:58
【问题描述】:

您好,我对这棵树有点困惑,需要帮助来确定我是否选择了正确的答案。

树:

  A
 / \
B   C
   / \
  D   E

让我们先进行遍历:

  1. 按顺序:BADCE
  2. 预购:ABCDE
  3. 后订单:BDECA

问题:

  1. 以下哪些遍历会产生 BADEC?

一个。只有有序 湾。仅水平顺序 C。仅限后购 d。仅限预购 e.预购和平购 F。有序和水平顺序 G。以上都不是

回答g

以下哪项是 BST 的后序遍历? 一个。 ACEDB 湾。 ABDCE C。 BDECA d。 EDCBA e. BADCE F。巴德克 G。以上之一

回答g

有人可以确认我是否正确完成了遍历并为这两个问题选择了正确的答案。

谢谢

【问题讨论】:

  • 看起来预购遍历实际上是“ABCDE”。
  • 谢谢,我会注意的

标签: binary-tree traversal


【解决方案1】:

三种遍历算法都是递归算法。这意味着为了遍历以节点 A 为根的整棵树,算法将分三部分完成任务:

  1. 遍历以 B 为根的子树(A 的左孩子)
  2. 遍历以C为根的子树(A的右孩子)
  3. 遍历/访问 A 本身

三个任务的顺序取决于您使用的顺序: - 按顺序(左、根、右)执行 task1、task3,然后是 task2。 - 预购(根、左、右)执行任务 3、任务 1 和任务 2。 - 后序(左、右、根)执行任务1、任务2,然后任务3

继续递归算法:遍历以B为根的子树,它会进一步拆分任务,依次遍历以B的左孩子为根的子树,以B的右孩子为根的子树,然后是B。

“拆分任务”一直持续到要遍历的子树只包含一个根节点。在这种情况下,算法访问根节点并返回剩余的子任务。同样的事情也发生在以 A 的右孩子 C 为根的子树上。

以下是按3种不同顺序遍历问题中的树并使用遍历结果回答问题的详细步骤:

  1. 按顺序遍历(左、根、右):
    • 遍历以 B 为根的子树
      • 访问 B
    • 访问A
    • 遍历以 C 为根的子树
      • 遍历C的左子树
        • 访问 D
      • 访问C
      • 遍历C的右子树
        • 访问E

按顺序:BADCE

  1. 先序遍历(根、左、右)
    • 访问A
    • 遍历以 B 为根的子树
      • 访问 B
    • 遍历以 C 为根的子树
      • 访问 C
      • 遍历C的左子树
        • 访问 D
      • 遍历C的右子树
        • 访问E

预购:ABCDE

  1. 后序遍历(左、右、根)
    • 遍历以 B 为根的子树
      • 访问 B
    • 遍历以 C 为根的子树
      • 遍历C的左子树
        • 访问 D
      • 遍历C的右子树
        • 访问E
      • 访问 C
    • 访问A

后订单:BDECA

你可以检查你的遍历结果是否和上面一样。

看遍历结果,我们知道你的问题1的答案是g,你的问题2的答案是c。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-01
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    相关资源
    最近更新 更多