给定preOrder和inOrder序列,可以有多少级别的BST序列?

时间:2015-06-24 06:38:26

标签: algorithm binary-tree binary-search-tree inorder preorder

当我尝试打印BST级别时,这个问题促使我。

这是

Pre-Order Sequence: 4, 1, 2, 3, 5, 6, 7, 8
In_order Sequence : 1, 2, 3, 4, 5, 6, 7, 8

以上pre_orderIn_order的BST的级别顺序序列是 [4, 2, 6, 1, 3, 5, 7, 8]

但是,对于相同的预订顺序,这个级别顺序序列似乎是可能的。 [4, 1, 5, 2, 6, 3, 7, 8]。我不知道怎么做。我想弄清楚这一点。

我无法在纸张(图纸)中构建满足所有pre_order,In-order和level order序列的BST。

2 个答案:

答案 0 :(得分:2)

如果你有顺序遍历与前/后顺序之一,这足以重建二叉树。此外,在BST(二元搜索树)的情况下,单独订购或预订就足够了。

在您的情况下,从预订4, 1, 2, 3, 5, 6, 7, 8重建BST会产生以下BST:

     4
   /   \
  1     5
   \     \
    2     6
     \     \
      3     7
             \
              8

再次给出了唯一的,级别顺序遍历[4,1,5,2,6,3,7,8]

另见:

答案 1 :(得分:1)

以下组合将生成唯一的二叉树(可以是BST)。

Inorder and Preorder.
Inorder and Postorder.
Inorder and Level-order.

所以在你的情况下,顺序&给出了预订单,它将生成唯一的二叉树,在您的情况下是BST,因此该级别的顺序对于该树是唯一的。

Pre-Order Sequence: 4, 1, 2, 3, 5, 6, 7, 8
In_order Sequence : 1, 2, 3, 4, 5, 6, 7, 8

SO树

level 0- 4
level 1- 1,5
level 2- 2,6
level 3- 3,7
level 4- 8

等级顺序是

  

4,1,5,2,6,3,7,8

在排序中总会有唯一的级别顺序遍历