仅给出一次遍历时,查找二叉树的其他两个遍历

时间:2012-11-22 09:11:43

标签: c++ binary-tree inorder postorder preorder

我知道你可以在给出它的顺序和前序遍历为字符串的情况下重建二叉树,但是只有在给定顺序遍历的情况下才能找到后序和/或preoder遍历吗?

2 个答案:

答案 0 :(得分:3)

不,只能从inorder遍历中检索postorder / preorder是不可能的。如果是,则可以仅使用inorder遍历重建二叉树,这是不可能的,因为一个inorder遍历可以为您提供几个可能的重建二叉树。

答案 1 :(得分:1)

您的输入如何,树的目的是什么?

如果你有一个完全括号的有序表达式,那么你有一个uniqe树,你可以通过构造树然后从树构建预订和后序术语来获得预订和后订单。 / p>

如果您的表达式没有完全括号,那么这表明与您的顺序匹配的不同树之间没有区别。例如,如果它是表示算术表达式的树,则x+y+z(x+y)+zx+(y+z)相同。 但这意味着,您使用的前后顺序无关紧要,++xyz+x+yz也是相同的。

现在,如果这无关紧要,您无需担心有序的几个可能的表示。只需选择其中一个表示,然后计算此树引起的前后顺序。

相关问题