首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么平衡二叉树很重要?

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

Stack Overflow用户
提问于 2012-07-16 12:02:08
回答 5查看 10.4K关注 0票数 11

为什么平衡二叉树很重要

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-07-16 20:15:45

二叉树的平衡由称为偏度的属性控制。如果树的偏差更大,则访问二叉树的元素的时间复杂度会增加。比如说一棵树

1 / \ 2 3 \ \ 7 4 \ 5 \ 6

上面的也是一个二叉树,但是是右偏的。它有7个元素,所以理想的二叉树需要O(Log7)=3次查找。但在最坏的情况下,您需要进行更深一层=4次查找。所以这里的偏斜度是一个常数1,但考虑一下如果树有数千个节点。在这种情况下,偏斜度将更加显著。因此,保持二叉树的平衡很重要。

但偏度再次成为争论的主题,因为对随机二叉树的概率分析表明,random binary tree with n elements is 4.3 log n的平均深度。因此,这实际上是平衡与偏斜的问题。

更有趣的是,计算机科学家甚至发现了这种不对称的优势,并提出了一种称为skew heap的不对称数据结构

票数 7
EN

Stack Overflow用户

发布于 2012-07-16 12:05:27

假设有一棵树看起来像这样:

代码语言:javascript
复制
  A
   \
    B
     \
      C
       \
        D
         \
          E

这是一个有效的二叉树,但现在大多数操作都是O(n)而不是O(lg )。

票数 10
EN

Stack Overflow用户

发布于 2012-07-16 12:05:35

为了保证log(n)搜索时间,您需要将每个分支的下级节点总数除以2。例如,如果您有一个线性树,从不从根到叶节点分支,那么搜索时间将是线性的,就像在链表中一样。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11497955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档