面试 —— 各种树对比

一、平衡二叉树

      平衡二叉搜索树又被称为AVL树,且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

二、红黑树

(一)相关说明

        红黑树是一种自平衡的二叉树,在插入和删除的过程中,红黑树会对树的组织形式进行调整,以尽可能的减少树的高度,从而节省查找的时间。一棵n个结点的红黑树的高度始终为:

h = logn

        红黑树的操作时间跟二叉查找树的时间复杂度是一样的,执行查找、插入、删除等操作的时间复杂度为:

O(logn)

(二)红黑树的特性

  1. 结点是红色或黑色

  2. 根结点始终是黑色

  3. 叶子结点都是黑色

  4. 红色结点的两个直接孩子结点都是黑色

  5. 从任一结点到每个叶子的所有简单路径都包含相同数目的黑色结点

        以上性质保证了红黑树在满足平衡二叉树特征的前提下,还可以做到 从根到叶子的最长路径最多不会超过最短路径的两倍(简单路径指路径上的顶点都不相同的路径)。

        由于它的设计,任何不平衡都会在三次旋转之内解决

(三)红黑树与AVL的比较

        红黑树的查询性能略微逊色于AVL树,因为他比avl树会稍微不平衡最多一层,也就是说红黑树的查询性能只比相同内容的avl树最多多一次比较,但是,红黑树在插入和删除上完爆avl树,avl树每次插入删除会进行大量的平衡度计算,而红黑树为了维持红黑性质所做的红黑变换和旋转的开销,相较于avl树为了维持平衡的开销要小得多。

三、B树

(一)为什么要引用B树

  1. 计算机有一个局部性原理,就是说,当一个数据被用到时,其附近的数据也通常会马上被使用。
  2. 所以当你用红黑树的时候,你一次只能得到一个键值的信息,而用B树,可以得到最多M-1个键值的信息。这样来说B树当然更好了。
  3. 另外一方面,同样的数据,红黑树的阶数更大,B树更短,这样查找的时候当然B树更具有优势了,效率也就越高。

(二)一个 m 阶的B树的特点

  1. 每一个节点最多有 m 个子节点

  2. 每一个非叶子节点(除根节点)最少有 ⌈m/2⌉ 个子节点

  3. 如果根节点不是叶子节点,那么它至少有两个子节点

  4. 有n个关键字的话有n+1棵子树

  5. 所有的叶子节点都在同一层

(三)图示

 

四、B+树

(一)B+与B的不同

  1. B+只有叶子节点会带有指向记录的指针,B+树的中间节点不保存数据,所以磁盘页能容纳更多节点元素。
  2. b+树查询必须查找到叶子节点,b树只要匹配到即可不用管元素位置,因此b+树查找更稳定(并不慢)
  3. B+所有叶子节点之间都有一个链指针,可以直接在叶子节点层横向遍历,b树想要遍历则需要叶子节点和上层节点不停往返。。
  4.  在B+树中,具有n个关键字的节点只含有n棵子树;而在B树中,具有n个关键字的节点有n+1棵子
  5. 对于范围查找来说,b+树只需遍历叶子节点链表即可,b树却需要重复地中序遍历

(二)图示

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宇宙超级无敌程序媛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值