AVL树、红黑树、B树、B+树了解了解

本文深入探讨了平衡二叉查找树(AVL树)与红黑树的区别。AVL树查询效率高但调整平衡成本大,适合查询频繁的场景;红黑树平衡成本低,适用于增删操作频繁的情况。同时,介绍了B树和B+树的特性,B树每个节点存储数据,查找不稳定,而B+树所有数据在叶子节点,查找性能稳定,适合范围查询。选择哪种数据结构取决于具体应用的需求。
摘要由CSDN通过智能技术生成

最近为了督促自己学习,搞了个公众号,算是自己平时的学习笔记,以后面试的时候看一看。有兴趣的可以微信搜索序员说公众号,每天花五分钟跟我一起学习,或者发送消息分享下工作、生活的事情也行。扫下面二维码添加公众号啊!!!二维码

平衡二叉查找树(也叫平衡二叉树,AVL树)

特点
  1. 非叶子节点最多拥有两个子节点

  2. 非叶子节值大于左边子节点、小于右边子节点

  3. 树的左右两边的层级数相差不会大于1

  4. 没有值相等重复的节点

    image-20210405224249826

红黑树

自平衡二叉查找树,又叫对称二叉B树

  1. 节点是红色或黑色。
  2. 根是黑色。
  3. 所有叶子都是黑色(叶子是NIL节点)。
  4. 每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。)
  5. 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。
    红黑树从根节点到叶子节点的最长路径不会超过最短路径的两倍

image-20210405215947670

平衡二叉查找树和红黑树对比

平衡二叉查找树要求左右子树高度差不超过1,红黑树要求从根节点到叶子节点的最长路径不会超过最短路径的两倍,即
平衡二叉查找树查询效率高,但是调整平衡的成本也更高
红黑树平衡成本相对较低,但是查找效率也相对更低
结论:查询频繁的用平衡二叉查找树,增删频繁的用红黑树

B树(B- 树)

简单理解就是一个平衡二叉树的多叉版本,B树的阶数(m)表示一个节点最多有多少子节点,当m为2的时候就是平衡二叉树

特点
  1. 根结点至少有两个子女。

  2. 每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m

  3. 每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m

  4. 所有的叶子结点都位于同一层。

  5. 每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划。

    image-20210405225833465

B+树

B树的变体

特点
  1. 有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点,即如下图,数据只保存在第三层的叶子节点上。

  2. 所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。

  3. 所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。

image-20210405230618654

B树和B+树对比

B树相对于B+树的优点:B树每个节点都存储了数据,不用每次都查找到叶子节点(最好情况是根节点,最坏是叶子节点,即查找不稳定)

B+树相对于B树的优点:只在叶子节点保存数据,在相同空间上可以容纳更多节点元素(本文B+树的图和B树的图层级一样,但是B树每个节点都保存了数据,所以B树每个节点占用内存比B+树大),即数据量相同的情况下,树的层级会更少,也就是查找的次数会更少。而且B+树每次查找都必须查找到叶子节点才能访问到数据,所以每次查找的次数固定,查找性能稳定。所有叶子节点形成有序链表,范围查询更简单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值