后序,预订,顺序遍历,二进制搜索树

时间:2014-07-28 03:46:00

标签: tree-traversal

考虑以下树结构。

    A
   / \
  B   C
 / \   \
D   E   F

使用postorder,preorder和inorder遍历以什么顺序访问节点?

1 个答案:

答案 0 :(得分:8)

我发现将postorderpreorderinorder视为递归算法会有所帮助。

后序遍历

递归地,这是左,右,自我。换句话说,对左子树进行遍历,然后对右子树进行遍历,然后才访问当前节点。基本情况是节点没有子节点。

对于这个例子:

答案:D, E, B, F, C, A

说明:

  1. 从节点A开始。评估左子树。在节点B处。评估左子树。在节点D处。没有孩子 - > 访问D
  2. 返回B.评估右子树。在节点E处。没有孩子 - > 访问E
  3. 返回B. 访问B
  4. 返回A.评估右子树。在节点C处。没有左子树,因此评估右子树。在节点F处。没有孩子 - > 访问F
  5. 返回C. 访问C
  6. 返回A. 访问A
  7. 预订遍历

    递归地,这是自我,左,右

    看看你是否可以使用postorder traversal的逻辑来自己得到答案。

    按顺序遍历

    递归地,这是左,自我,正确

    看看你是否可以使用postorder traversal的逻辑来自己得到答案。

    如果您想检查您的工作,

    Preorder traversalA, B, D, E, C, FInorder traversalD, B, E, A, C, F