我目前正在学习二叉搜索树,如果我将这些值插入到我的树中:
13, 3, 4, 12, 14, 10, 5, 1, 8, 2, 7, 9, 11, 6, 18
然后我的二叉搜索树看起来像这样:
如果我在树上添加另一个号码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
插入上面的二叉搜索树的正确方法吗?
答案 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
数据在树中显示的级别在插入时是固定的,并且在添加更多项目时不会更改。这就是为什么第二种方法正是您正在寻找的原因。