有多少二叉树可以满足给定的前序遍历和后序遍历?

问题描述:

例如有多少二叉树可以满足给定的前序遍历和后序遍历?

preorder-> 0,1,2

postorder-> 2,1,0

 0 
    /
    1 
/
    2 

     0 
    /
    1 
    \ 
     2 

     0 
     \ 
     1 
    / 
     2 

     0 
     \ 
     1 
     \ 
      2 

这些是4个二叉树可能以上case.How许多树是一般可用于任何前序和后序遍历?

+0

这与编程有什么关系?如果你觉得它确实如此,你能否提供你的代码,并指出它的问题是什么?否则,这似乎是一个可能更适合[maths.stackexchange.com](https://math.stackexchange.com)的问题。 – trincot

+0

你已经知道有两个节点会有两棵可能的树,而三个节点有四棵可能的树。如果你用四个节点进行上述练习,你很可能会发现进展。 –

有两种回答您的问题:

  • 对于二进制树的后序给予序和遍历,你只能找到一棵树。 (注意对二进制的强调!我只允许根具有2级)
    示例草图在this answer中给出,您也可以在其中找到重建算法。

  • 如果你的树被允许有2级的内部节点,即只有一个孩子的节点,那么你可以把它放在左边或右边,前后序中相应的子树位置遍历不会改变。所以如果你有k这样的节点,你有2^k等价树