C++ 当只给出一次遍历时,查找二叉树的其他两次遍历

C++ 当只给出一次遍历时,查找二叉树的其他两次遍历,c++,binary-tree,inorder,postorder,preorder,C++,Binary Tree,Inorder,Postorder,Preorder,我知道当给定一棵二叉树的顺序遍历和前序遍历作为字符串时,可以重构它,但是当只给定顺序遍历时,是否可以找到后序和/或前序遍历?否,仅从顺序遍历检索后序/前序是不可能的。如果是这样的话,就可以只使用顺序遍历来重构二叉树,这是不可能的,因为一次顺序遍历可以生成几个可能的重构二叉树。您的输入是什么样子的,树的用途是什么 如果有一个完全圆括号内的顺序表达式,那么就有一个uniqe树,通过构造树,然后从树中构造前序和后序项,可以得到前序和后序 如果表达式没有完全插入括号,则表示与顺序匹配的不同树之间没有差异

我知道当给定一棵二叉树的顺序遍历和前序遍历作为字符串时,可以重构它,但是当只给定顺序遍历时,是否可以找到后序和/或前序遍历?

否,仅从顺序遍历检索后序/前序是不可能的。如果是这样的话,就可以只使用顺序遍历来重构二叉树,这是不可能的,因为一次顺序遍历可以生成几个可能的重构二叉树。

您的输入是什么样子的,树的用途是什么

如果有一个完全圆括号内的顺序表达式,那么就有一个uniqe树,通过构造树,然后从树中构造前序和后序项,可以得到前序和后序

如果表达式没有完全插入括号,则表示与顺序匹配的不同树之间没有差异。例如,如果它是一棵表示算术表达式的树,那么
x+y+z
(x+y)+z
x+(y+z)
相同。 然而,这意味着,使用哪种前序或后序并不重要,而且
++xyz
+x+yz
是相同的

现在,如果这不重要,您不需要担心顺序中的几个可能的表示。只需选择其中一种表示,然后计算此树所产生的前后顺序。

如果只提供“顺序”遍历,则可以构造许多不同的二叉树。也就是说,您不能仅使用“顺序”来描述“唯一”树。