给定一个 preOrder 和 inOrder 序列,可能有多少级阶 BST 序列?

How many level order BST sequences are possible given a preOrder and inOrder sequence?

当我尝试打印 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。

如果中序遍历加上pre/post-order之一,就足以重构一棵二叉树了。此外,在 BST(二进制 search 树)的情况下,仅 post-order 或 pre-order 就足够了。

在你的例子中,从预购 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]

另请参阅:

以下组合将生成唯一的二叉树(可以是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

在排序中总会有唯一的层次顺序遍历