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

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

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

核心区别:

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

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

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

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

相关推荐
用户091 小时前
停止滥用 Dispatchers.IO:Kotlin 协程调度器的深度陷阱与优化实战
android·面试·kotlin
道可到2 小时前
淘宝面试原题 Java 面试通关笔记 02|从编译到运行——Java 背后的计算模型(面试可复述版)
java·后端·面试
Nathan202406162 小时前
Kotlin-Sealed与Open的使用
android·前端·面试
程序员二黑2 小时前
告别硬编码!5个让Web自动化脚本更稳定的定位策略
面试·单元测试·测试
懒羊羊不懒@3 小时前
C语言指针进阶(进阶)
java·开发语言·面试
聪明的笨猪猪4 小时前
Java SE “核心类:String/Integer/Object”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
聪明的笨猪猪4 小时前
Java SE “语法”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
零千叶12 小时前
【面试】Kafka / RabbitMQ / ActiveMQ
面试·kafka·rabbitmq
麻雀202513 小时前
一键面试prompt
面试·职场和发展·prompt
PAK向日葵13 小时前
【算法导论】NMWQ 0913笔试题
算法·面试