每日一题------面试

红黑树,b树,b+树有什么区别?

特性 红黑树 B树 B+树
节点容量 每个节点存1个键值对 每个节点存多个键值对 非叶节点存多个键,仅叶节点存值
分支数 二分叉(二叉树) 多分叉(多路树) 多分叉,叶节点额外链表连接
数据存储位置 所有节点均存数据 所有节点均存数据 数据仅存于叶节点
平衡维护方式 颜色标记与旋转 节点分裂/合并 节点分裂/合并
查找稳定性 查到即返回 查到即返回 必须查至叶节点

核心区别:

  • 查询效率:红黑树 单点查询稳定在 O(log n),但树深度较高(如1亿数据需约30次查找)。B/B+树:树高更低(相同数据量下树高度可能仅为红黑树的1/3),显著减少磁盘I/O次数。

  • 范围查询:B+树 的叶子节点通过指针形成链表,范围遍历效率极高(如查询[A, Z]只需找到起点后顺序遍历)。B树/红黑树:范围查询需回溯父节点或频繁调整指针,效率较低。

  • 插入/删除维护成本:红黑树 需频繁旋转和变色,维护规则复杂。B/B+树:通过批量调整(分裂/合并节点)减少频繁操作,更适合海量数据。

  • 场景选择:如果数据在内存中 + 高频增删 ,选择红黑树更合适,如果数据在磁盘 + 随机/范围查询均需 ,选择B+树更合适。

相关推荐
GSDjisidi2 小时前
日本IT就职面试|仪容&礼仪篇分享建议
面试·职场和发展
skyang.7 小时前
LeetCode 85. 最大矩形
算法·leetcode·职场和发展
岁忧9 小时前
(LeetCode 面试经典 150 题 ) 155. 最小栈 (栈)
java·c++·算法·leetcode·面试·go
星眠11 小时前
学习低代码编辑器第四天
javascript·面试
NeverSettle11057411 小时前
手把手教你用nodejs + vue3 实现大文件上传、秒传、断点续传
前端·面试
Bohemian12 小时前
实现一个单机版令牌桶限流器(字节)
后端·面试
xzkyd outpaper12 小时前
Android中主线程、ActivityThread、ApplicationThread的区别
android·面试
前端拿破轮12 小时前
字节面试官:你对Promise很熟是吧?试一下手写所有静态方法
前端·面试·promise
天天摸鱼的java工程师14 小时前
🧠 MySQL 索引结构有哪些?优缺点是什么?【原理 + 场景实战】
java·后端·面试
ZzMemory15 小时前
深入了解 module.css:前端样式管理的有效方案
前端·css·面试