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

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

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

核心区别:

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

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

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

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

相关推荐
独行soc1 分钟前
2025年渗透测试面试题总结-腾讯[实习]安全研究员(题目+回答)
linux·安全·web安全·面试·职场和发展·渗透测试
天才测试猿6 小时前
接口自动化测试之pytest接口关联框架封装
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·pytest
_Itachi__7 小时前
LeetCode 热题 100 208. 实现 Trie (前缀树)
算法·leetcode·职场和发展
穗余8 小时前
NodeJS全栈开发面试题讲解——P10微服务架构(Node.js + 多服务协作)
前端·面试·node.js
元闰子8 小时前
走技术路线需要些什么?
后端·面试·程序员
每次的天空8 小时前
Android第十一次面试flutter篇
android·flutter·面试
天天扭码9 小时前
面试必备 | React项目的一些优化方案(持续更新......)
前端·react.js·面试
保持学习ing10 小时前
黑马Java面试笔记之 消息中间件篇(Kafka)
java·笔记·面试·kafka
MyikJ11 小时前
Java面试实战:从Spring Boot到微服务与AI的全栈挑战
java·大数据·spring boot·微服务·ai·面试·架构设计
@蓝莓果粒茶11 小时前
LeetCode第244题_最短单词距离II
c++·笔记·学习·算法·leetcode·职场和发展·c#