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

时间:2017-07-07 21:52:56

标签: algorithm data-structures binary-tree

例如

preorder-> 0,1,2

postorder-> 2,1,0

      0
     /
    1
   /
  2

      0
     /
    1
     \
      2

      0
       \
        1
       /   
      2

      0
       \
        1
         \
          2

对于上述情况,这些是可能的4个二叉树。对于任何预订和后序遍历,一般可能有多少树?

1 个答案:

答案 0 :(得分:0)

您的问题有两个答案:

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

  • 如果你的树允许有2级的内部节点,即只有一个孩子的节点,那么你可以把它放在左边或右边,相应的子树位置在前后遍历不会发生变化。因此,如果您有k个此类节点,则您拥有2^k个等效树