1. 有了查找二叉树,为什么还需要平衡二叉树

上一节我们讲述了查找二叉树,对于二叉查找树来说,其查找效率十分依赖于树中节点的拓扑结构,也就是节点间的布局关系。举一个例子,下图描绘了一个节点插入顺序为 1、2、3、4、5 的查找二叉树。这些节点是按照递升顺序被插入的,如果这样,那么这颗查找二叉树的拓扑结构其实就是将节点排布在一条线上,而不是以扇形结构散开,再查找某个值的时候,运行时间就会退减到线性时间 O(n)。因为每一步比较操作后还是需要逐个比较其余的节点。也就是说,在这种情况下,在查找二叉树中查找节点与在数组中查找就基本类似了。

只有当查找二叉树中的节点以扇形结构散开时,当在查找二叉树中查找一个节点时,每一步比较操作后都会将节点的数量减少一半。所以,查找操作的运行时间为 O(log n)。同样的,对该查找二叉树的插入、删除和查找操作都可以达到最优的运行时间 O(log n)。

在讲述平衡二叉树之前,我想要先去确认几个问题的答案。

首先,第一个问题是,对于查找二叉树中的任意一个节点,其高度如何定义。

答案是:节点的高度为该节点到叶子节点的最长路径。如下图所示,图中标注了各个节点的高度。

答案是:如果任意一节点对应的两棵子树的最大高度差为 1,那么我们就称这个查找二叉树是平衡的。即

轻重在平衡:平衡查找树的强大威力相关推荐

  1. HTTP协议漫谈 C#实现图(Graph) C#实现二叉查找树 浅谈进程同步和互斥的概念 C#实现平衡多路查找树(B树)...

    HTTP协议漫谈 简介 园子里已经有不少介绍HTTP的的好文章.对HTTP的一些细节介绍的比较好,所以本篇文章不会对HTTP的细节进行深究,而是从够高和更结构化的角度将HTTP协议的元素进行分类讲解. ...

  2. B树-多路平衡查找树

    B树 B树 一个m阶B树的具有的特征(或必须满足的条件) B树的查找 B树插入元素(一定是在叶子节点插入) 1.插入后,没有破坏B树的规则 2.插入后,叶子节点元素超过m-1个 B树删除元素 1.删除 ...

  3. 数据结构—2-3树、2-3-4树、B树、B+树等多路查找树的原理详解

    详细介绍了多路查找树中的2-3树.2-3-4树.B树.B+树的概念的区别,以及它们的应用场景. 文章目录 1 多路查找树的概述 1.1 索引概述 1.2 多路查找树的引出 2 2-3树 2.1 2-3 ...

  4. 查找、检索 算法-总结5 多路查找树/B~树/B+树

    源地址:http://hxraid.javaeye.com/blog/611105 在前面专题中讲的BST.AVL.RBT都是典型的二叉查找树结构,其查找的时间复杂度与树高相关.那么降低树高自然对查找 ...

  5. 平衡查找树C语言程序,树4. Root of AVL Tree-平衡查找树AVL树的实现

    对于一棵普通的二叉查找树而言,在进行多次的插入或删除后,容易让树失去平衡,导致树的深度不是O(logN),而接近O(N),这样将大大减少对树的查找效率.一种解决办法就是要有一个称为平衡的附加的结构条件 ...

  6. 多路平衡查找树(B Tree)(分裂、合并)

    Balanced Tree 这个就是我们的多路平衡查找树,叫做B Tree(B 代表平衡) 跟AVL 树一样,B 树在枝节点和叶子节点存储键值.数据地址.节点引用. 它有一个特点:分叉数(路数)永远比 ...

  7. 查找算法之平衡查找树

    前面介绍的算法在最坏的情况下还是很糟糕.这次会介绍一种二分查找树并能保证无论如何构造它,他的运行时间都是对数级别的.理想情况下我们希望能够保持二分查找树的平衡性.但是,在动态插入中保证树的完美平衡的代 ...

  8. 笔试算法题(58):二分查找树性能分析(Binary Search Tree Performance Analysis)

    议题:二分查找树性能分析(Binary Search Tree Performance Analysis) 分析: 二叉搜索树(Binary Search Tree,BST)是一颗典型的二叉树,同时任 ...

  9. 二分查找--AVL查找树

    Data Mining 开启阅读模式 二分查找--AVL查找树 二分查找可以找到元素在数组中的下标位置,而查找树由于采用的是树结构,所以只能判断出元素是不是在树中以及给出最大/小值,而不能确定指定元素 ...

  10. 二分查找树性能分析(Binary Search Tree Performance Analysis)

    经典算法系(21)-二分查找树性能分析(Binary Search Tree Performance Analysis)https://www.douban.com/note/221942390/   ...

最新文章

  1. iOS常用第三方开源框架和优秀开发者博客等
  2. python socket select 错误 Filedescriptor out of range in select 解决方法
  3. 布局管理器 2----- 表格布局
  4. BeautifulSoup操作xml文件
  5. 怎样用VB编写.DLL动态链接库文件 1
  6. micropython 实时音频传输_在线实时合唱的实现原理与难点是什么?
  7. hdfs中8031是什么端口号_在宿主机如何访问docker中hadoop的hdfs:ip:9000啊, 端口映射出来啊...
  8. layui上传报错会有哪些原因_一到冬天,为什么会比别人更怕冷?有哪些原因?...
  9. 听说,那谁谁谁是同性恋?
  10. RocketMQ高性能通信实现机制源码精读
  11. Bailian3709 2进制转化为3进制【进制】
  12. Visio画图如何保存高质量图片供论文使用
  13. Python爬虫初学(3)登陆武汉理工大学教务处
  14. requirejs+jquery表单验证
  15. C语言中删除重复字母,删除C ++中的重复字母
  16. 来套近乎啊——思维导图
  17. EOS Wallet 操作
  18. Excel-计算数列元素间的和差
  19. 《王者圣域》2.23上线链游玩家|放置塔防、趣味竞技
  20. 第一行代码-android-第三版-pdf扫描-思维导图-课件-源码

热门文章

  1. 为什么很多公司不要培训出来的Java程序员?
  2. 从面试官的角度聊聊培训班对程序员的帮助,同时给培训班出身的程序员一些建议
  3. 服务器显示共享文件夹的图标,Win7共享文件夹上的小锁图标怎么关闭?
  4. mysql用拼音显示字段名_MySQL汉字字段按拼音排序显示
  5. NOI / 1.3编程基础之算术表达式与顺序执行——12:计算球的体积
  6. 基于M0 MCU的无感FOC航模电机控制
  7. JSONP跨域以及CORS跨域
  8. HDU-1212-Big Number【大数】
  9. 计算机打不开硬盘,电脑硬盘打不开的原因 如何解决电脑硬盘问题
  10. 【Love2d从青铜到王者】第一篇:Love2d入门以及安装教程