STL笔记---B树,B+树,RB树
2011-10-06 10:28
525 查看
一。红黑树(RB-Tree)
红黑树是每个节点都有’颜色’特征的平衡二叉查找树。
除了一般平衡二叉树做具备的条件,它还具有如下特征:
1) 节点的颜色是红色或者黑色;
2) 根节点的颜色是黑色的;
3) 如果一个节点时带红色属性的,那么它的子节点必须是黑色的;
4) 所有叶子节点是黑色的(叶子节点为NULL节点);
5) 从任一节点开始到其叶子(NULL)节点的所有简单路径中,包含相同数目的黑色节点。
基于红黑树的实现的SGI STL容器包括:set,map,multiset,multimap等。
二。B树
B树是一种平衡的多叉树,通常所说的m阶B树应该具备这些条件:
1)每个节点最多有m个子节点;
2)除根节点和叶子节点外,每个节点至少有[ceil(m/2)]个子节点,ceil()为取上限函数;
3)所有的叶子节点都在同一层,叶子节点不包含任何关键字的信息;
4)有n个关键码的非叶子节点恰好有n+1个子节点。
B树多用于磁盘数据库的索引实现方式。
三。B+树
B+树是B树的变体,也是一种多叉搜索树。它与B树的主要区别是:
1)非叶子节点的子树指针与关键字个数相同;
2)非叶子节点的相邻子树指针p[i]和p[j],p[i]指向关键字键值在v[i]~v[j-1]之间;
3)所有需要查找的关键字信息存储在叶子节点,并且在它们之间增加了链表指针;非叶子节点只作为索引的一部分,也即是所有查到要搜索到叶子节点才能结束。
B+树中叶子节点增加链表指针是方便插入元素或者删除元素时引起的裂变或者合并操作的实现。B+树更加适合于文件索引系统。
红黑树是每个节点都有’颜色’特征的平衡二叉查找树。
除了一般平衡二叉树做具备的条件,它还具有如下特征:
1) 节点的颜色是红色或者黑色;
2) 根节点的颜色是黑色的;
3) 如果一个节点时带红色属性的,那么它的子节点必须是黑色的;
4) 所有叶子节点是黑色的(叶子节点为NULL节点);
5) 从任一节点开始到其叶子(NULL)节点的所有简单路径中,包含相同数目的黑色节点。
基于红黑树的实现的SGI STL容器包括:set,map,multiset,multimap等。
二。B树
B树是一种平衡的多叉树,通常所说的m阶B树应该具备这些条件:
1)每个节点最多有m个子节点;
2)除根节点和叶子节点外,每个节点至少有[ceil(m/2)]个子节点,ceil()为取上限函数;
3)所有的叶子节点都在同一层,叶子节点不包含任何关键字的信息;
4)有n个关键码的非叶子节点恰好有n+1个子节点。
B树多用于磁盘数据库的索引实现方式。
三。B+树
B+树是B树的变体,也是一种多叉搜索树。它与B树的主要区别是:
1)非叶子节点的子树指针与关键字个数相同;
2)非叶子节点的相邻子树指针p[i]和p[j],p[i]指向关键字键值在v[i]~v[j-1]之间;
3)所有需要查找的关键字信息存储在叶子节点,并且在它们之间增加了链表指针;非叶子节点只作为索引的一部分,也即是所有查到要搜索到叶子节点才能结束。
B+树中叶子节点增加链表指针是方便插入元素或者删除元素时引起的裂变或者合并操作的实现。B+树更加适合于文件索引系统。
相关文章推荐
- 学习笔记-B树,B+树及数据库索引
- c++ stl iostream 使用笔记二
- C++标准程序库 学习笔记 第五章 STL(标准模板库概述)
- STL学习笔记-- set
- Effective STL 学习笔记 Item 18: 慎用 vector<bool>
- C++ Primer 学习笔记_43_STL实践与分析(17)--再谈迭代器【中】
- STL学习笔记之容器--hashtable
- 极客班STL第三次课程笔记——内存分配器
- 相亲相爱的B家人(B树,B+树,B-树,B*树)
- STL学习笔记之容器--multimap
- Data Structures with C++ Using STL Chapter 4向量容器---笔记
- STL笔记_容器
- stl-stable_sort源码学习笔记
- Mysql 索引(B树或B+树)
- B树和B+树
- STL学习笔记— —迭代器
- C++ Primer 学习笔记_44_STL实践与分析(18)--再谈迭代器【下】
- B树与B+树
- C++ STL--queue队列容器学习笔记
- 《STL源码剖析》---stl_map.h阅读笔记