如何区分两个BST

时间:2019-06-08 22:13:09

标签: algorithm data-structures graph binary-search-tree

这是具有相同元素的不同BST的组合,其排列外观根据树形结构中添加节点的顺序而有所不同:

  1             1           1                    1         1
   \             \           \                    \         \
    2             2           3                    4         4 
     \             \         / \                  /         /
      3             4       2   4                3         2
       \           /                            /           \
        4         3                            2             3




  2           2          3        3             4         4         4      
 / \         / \        / \      / \           /         /         /      
1   3       1   4      2   4    1   4         3         2         3      
     \         /      /          \           /         / \       /         
      4       3      1            2         2         1   3     1          
                                           /                     \          
                                          1                       2        



  4         4
 /         /
1         1 
 \         \
  2         3 
   \        /
    3      2

它们的有序遍历是相同的,那么我们如何区分它们呢?尤其是当添加节点的顺序不止一个且它们都生成相同的结构时,例如2,1,4,52,4,1,32,4,3,1

1 个答案:

答案 0 :(得分:1)

您提到您的所有示例都具有相同的顺序遍历(1234),这意味着顺序不足以得出树结构的信息。但是,两个post-order and pre-order序列都足以推导二叉搜索树的树结构。

例如,给定预购2-1-3-4,唯一满足此预购要求的二进制搜索树就是您的第2行col 1示例。将其与预订2-1-4-3进行比较,这将是您的第2行第2列示例。

对于您的所有示例,以下是它们的预购符号

[1234] [1243] [1324] [1432] [1423]

[2134] [2143] [3214] [3124] [4321] [4213] [4312]

[4123] [4132]

如您所见,它们都是不同的。您可以对它们的后遍历重复相同的过程,并且应该得到所有不同的结果。