数据结构:二叉树遍历

问题描述 投票:0回答:1

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

树:

  A
 / \
B   C
   / \
  D   E

让我们先遍历:

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

问题:

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

a。仅按顺序b。仅等级顺序C。只有后单d。仅预购e。预购和等级订购F。按顺序和级别顺序G。以上都不是

答案g

以下哪个是BST的后遍历?一种。 ACEDBb。 ABDCEC。 BDECAd。埃德巴e。巴德F。百德G。以上之一

答案g

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

谢谢

binary-tree traversal
1个回答
0
投票

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

  1. 遍历以B(A的左孩子)为根的子树
  2. 遍历植根于C(A的右孩子)的子树
  3. 遍历/访问A本身
  4. 这三个任务的顺序取决于您使用的顺序:-按顺序

(左,根,右)执行task1,task3,然后执行task2。 -Pre-order(Root,Left,Right)执行task3,task1,然后执行task2。 -[Post-order(左,右,根)执行任务1,任务2,然后执行任务3

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

“拆分任务”继续进行,直到要遍历的子树仅包含一个根节点。在这种情况下,该算法将访问根节点并返回到其余子任务。植根于A的正确子C的子树也发生了同样的事情。

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

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

  1. 预遍历(根,左,右)
    • 访问A
    • 以B为根的遍历子树
      • 访问B
  2. 以C为根的遍历子树
    • 访问C
    • 遍历C的左子树
      • 访问D
  3. 遍历C的右子树
    • 访问E
  4. 预订:ABCDE

  1. 后遍历(左,右,根)
    • 以B为根的遍历子树
      • 访问B
    • 以C为根的遍历子树
      • 遍历C的左子树
        • 访问D
    • 遍历C的右子树
      • 访问E
  2. 访问C
  3. 访问A
  4. 后置订单:BDECA

您可以检查遍历结果是否与上述相同。

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

© www.soinside.com 2019 - 2024. All rights reserved.