从预订和后订单遍历重建树

时间:2014-02-21 05:46:59

标签: algorithm tree preorder postorder

鉴于具有独特元素的非二叉树的预订和后序遍历我是如何创建它们来自的树的?

例如

给出预订= ABCDEF
和postorder = BCEFDA

它应该构建一个相当于
的树 ~~一个~~~~~
〜/〜|〜\ ~~~
乙〜C〜d ~~
~~~~ /〜\ ~~
~~~Ë~~ F〜

(抱歉道具,这是我弄清楚如何让树看起来正确但仍然清晰易读的唯一途径)

无论如何,我不是要求代码执行此操作,因为它是一个家庭作业项目,代码本身不是问题。我需要帮助的是比较两个输入的算法,以便它们可靠地创建正确的树

P.S。给定的树可以或多或少地复杂化任何数量(可能是<= 26)的节点

TL; DR
How do I use Pre-order and Post-order traversals to construct their original tree

1 个答案:

答案 0 :(得分:0)

递归+迭代解决方案

每个级别处理传入其中的整个字符串

  • 如果第一个元素相等 - 删除并添加为当前级别的子级
  • 如果第一个元素不相等 - 将第一个元素预先排序作为父元素删除,并递归调用它的子字符串以定位发布订单元素的位置

使用空的sentinal作为A的父级进行调用

这将在大多数情况下为您提供结果。