为什么二叉树平衡很重要?

时间:2012-07-16 04:02:08

标签: data-structures binary-tree

为什么平衡二叉树很重要

5 个答案:

答案 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