如何构造二叉搜索树

时间:2015-11-14 14:44:48

标签: algorithm tree binary-search-tree

我目前正在学习二叉搜索树,如果我将这些值插入到我的树中:

13, 3, 4, 12, 14, 10, 5, 1, 8, 2, 7, 9, 11, 6, 18

然后我的二叉搜索树看起来像这样:

enter image description here

如果我在树上添加另一个号码15

13, 3, 4, 12, 14, 10, 5, 1, 8, 2, 7, 9, 11, 6, 18, 15

我的问题是这是第一个:

13
  \
   14
    \
     15
      \
       18

或第二个:

13
  \
   14
     \
      18
      /
     15

是将15插入上面的二叉搜索树的正确方法吗?

2 个答案:

答案 0 :(得分:1)

如果您是“常规”BST,则第二个输出是正确的输出。但是,如果您使用的是平衡BST,那么它可能会重新排列树中节点的相对位置。我很确定您所关注的书籍(或参考书)必须对此类问题有解释。通常,当添加节点时,不对BST的先前结构(即,节点的先前位置)进行修改。然而,这可能导致“不平衡”或“倾斜”的树木。这可能导致节点的搜索时间更长。为了解决这个问题,使用诸如红黑树,avl树等的“平衡树”。在这样的树中,通常在添加节点时需要对树结构进行修改。有关更多信息,请参阅以下内容:

https://en.wikipedia.org/wiki/Binary_search_tree?oldformat=true

https://en.wikipedia.org/wiki/Self-balancing_binary_search_tree?oldformat=true

答案 1 :(得分:0)

两种方式都可行,但第一种方式与当前树的构建方式不一致。

具体来说,请看4-12-10部分:

4
 \
 12
 /
10

数据在树中显示的级别在插入时是固定的,并且在添加更多项目时不会更改。这就是为什么第二种方法正是您正在寻找的原因。