一、平衡树

1、2-3查找树

2-节点:含有一个键(及其对应的值)和两条链,左链接指向2-3树中的键都小于该结点,右链接指向的2-3树中的键都大于该结点。

3-节点:含有两个键(及其对应的值)和三条链,左链接指向的2-3树中的键都小于该结点,中链接指向的2-3树中的键都位于该结点的两个键之间,右链接指向的2-3树中的键都大于该结点。

私房菜数据结构和算法-- 2-3查找树(平衡树) + B-树 + B+树 + 并查集

查找:将二叉查找树的查找算法一般化我们就能够直接得到2-3树的查找算法。要判断一个键是否在树中,我们先将它和根结点中的键比较。如果它和其中任意一个相等,查找命中;否则我们就根据比较的结果找到指向相应区间的连接,并在其指向的子树中递归地继续查找。如果这个是空链接,查找未命中。

私房菜数据结构和算法-- 2-3查找树(平衡树) + B-树 + B+树 + 并查集

插入:插入时,如果是2-节点,则可转换为3-节点,如果是3-节点,转换为两个2-节点,如果有4-节点,则向上分裂;根节点可以为3-节点,如果转换后为4-节点,则向上转换一个根节点

私房菜数据结构和算法-- 2-3查找树(平衡树) + B-树 + B+树 + 并查集

2-3树的性质

  • 任意空连接到根节点的距离都是相等的
  • 4-节点变为3-节点的时候,树的高度不回发生变化,只有当根节点的临时4-节点的时候会,树的高度会加一
  • 普通二叉树生长是由顶到下,2-3树是从底向上增长

2、红黑树

定义:所有的左连接都是红链接、没有任何一个节点同时和两条红链接项链,空节点到根节点之间的黑连接数量相同。根节点总是黑色的

私房菜数据结构和算法-- 2-3查找树(平衡树) + B-树 + B+树 + 并查集

平衡化:当对树进行操作后,可能会打乱红黑树的结构,需要进行平衡化,主要为左旋和右旋

  • 左旋:当某个左节点为黑色,右节点为红色,则进行左旋
  • 右旋:当某个左节点为红色,且左节点的子节点也是红色,则进行右旋

插入:新插入的节点为红色

私房菜数据结构和算法-- 2-3查找树(平衡树) + B-树 + B+树 + 并查集

二、B-树

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相关文章:

  • 2021-09-09
  • 2021-10-27
  • 2021-06-03
  • 2021-08-31
  • 2021-11-22
  • 2021-09-06
  • 2022-12-23
猜你喜欢
  • 2022-01-16
  • 2022-12-23
  • 2021-07-18
  • 2021-07-08
  • 2021-06-01
  • 2021-11-27
  • 2021-09-17
相关资源
相似解决方案