为什么平衡二叉树很重要
答案 0 :(得分:8)
想象一下这样的树:
A
\
B
\
C
\
D
\
E
这是一个有效的二叉树,但现在大多数操作都是O(n)而不是O(lg n)。
答案 1 :(得分:5)
二叉树的平衡由称为偏斜的属性控制。如果树更倾斜,则访问二叉树的元素的时间复杂度增加。说一棵树
1 / \ 2 3 \ \ 7 4 \ 5 \ 6
以上也是二叉树,但右倾斜。它有7个元素,因此理想的二叉树需要O(log 7)= 3个查找。但是在最坏的情况下,你需要再深一级= 4次查找。所以这里的偏度是常数1.但考虑树是否有数千个节点。在这种情况下,偏斜将更加可观。因此保持二叉树平衡非常重要。
但是随着随机二叉树的概率分析显示random binary tree with n elements is 4.3 log n的平均深度,偏差再次成为辩论的主题。所以这实际上是平衡与偏斜的关系。
另一个有趣的事情是,计算机科学家甚至发现了偏斜的优势,并提出了一种称为skew heap的偏斜数据结构
答案 2 :(得分:4)
要确保log(n)搜索时间,您需要在每个分支上将下级节点的总数除以2。例如,如果您有一个线性树,从不从根分支到叶节点,那么搜索时间将是链接列表中的线性。
答案 3 :(得分:1)
一个非常不平衡的树,例如一个树,其中所有节点都链接到左边,意味着你仍然在找到最后一个节点之前搜索每个节点,这根本不是树的一点,并且没有任何好处。链表。平衡树使得搜索时间更长O(log(n))而不是O(n)。
答案 4 :(得分:0)
我们知道,二叉搜索树上的大多数操作都与树的高度成比例,因此,希望保持高度较小。这样可以确保搜索时间严格到复杂度的O(log(n))。
不是大多数可用的树平衡技术都适用于 完全充满或接近完美平衡的树木。
最后,您需要简化树,并选择最佳的二叉树,例如红黑树或avl