1

我目前是一名学生,他的任务涉及将二叉树方法调整为通用树方法。我唯一的问题是,我对以下一般树的后序遍历是否正确?如果是这样,那么我知道我的算法正在工作,我只是无法正确掌握后订单遍历的窍门,我觉得并认为该网站可以提供帮助。

                     B
--------------------|------------------
|                   |                 |
A             ------D-----         ---I---
             |      |    |        |       |
             C      E    G        H       L
                         |
                         F

我的结果是: ACEFGDHLIB

4

2 回答 2

5

你的答案在我看来是正确的。

这个技巧适用于广义树,而不仅仅是二叉树。

当你找到黑点时,沿着虚线访问节点。

后序遍历

重用此图进行预遍历只需将所有黑点旋转 180 度即可。按顺序遍历将是 90 度,但如果这不是二叉树,则它是模棱两可的。

http://en.wikipedia.org/wiki/Tree_traversal

来自http://www.brpreiss.com/books/opus4/html/page259.html

后序遍历最后访问根。对一般树进行后序遍历:

按照给定的顺序对根的每个子树进行后序遍历;然后访问根。

于 2014-10-27T05:10:51.800 回答
0

可以使用递归来完成后序打印。您可以从下面的递归函数中形象化自己。返回 print() 函数上方的两个函数后,节点将被打印。尝试在纸上手动分析以下代码上的树,您会发现结果是正确的。最初可视化这样的递归函数会很困难,但是您应该能够可视化成为优秀的程序员,无论如何尝试一下。

void postorder(node)
{
   if(node=NULL)
      return;
   postorder(node.left);
   postorder(node.right);
   print(node);
}
于 2014-10-27T08:16:31.343 回答