数据结构:二叉树遍历

时间:2016-08-12 08:13:57

标签: binary-tree traversal

嗨,我对这棵树有点困惑,需要帮助弄清楚我是否选择了正确的答案。

树:

  A
 / \
B   C
   / \
  D   E

让我们首先进行遍历:

  1. 有序:BADCE
  2. 预订:ABCDE
  3. 订购后:BDECA
  4. 问题:

    1. 以下哪个遍历会产生BADEC?
    2. 一个。只是按顺序 湾只有级别订单 C。只有下订单 d。只是预订 即预订和水平订单 F。有序和水平顺序 G。以上都不是

      回答g

      以下哪项是BST的订单后遍历? 一个。 ACEDB 湾ABDCE C。 BDECA d。 EDCBA 即BADCE F。 BADEC G。以上之一

      回答g

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

      由于

1 个答案:

答案 0 :(得分:1)

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

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

这三个任务的顺序取决于您使用的顺序: -按顺序(左,根,右)执行任务1,任务3,然后执行任务2。 -预购(Root,Left,Right)执行task3,task1,然后执行task2。 -后订单(左,右,根)执行task1,task2,然后执行task3

继续递归算法:遍历以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。