6.4 B树

damone大约 1 分钟

6.4 B树

uTools_1638266668727
uTools_1638266668727

6.5.1 B树的定义

B树,又名多路平衡查找树m叉查找树

数据库索引技术里大量使用者B树和B+树的数据结构.

B树是由二叉排序树升级为m叉查找树

uTools_1638263634505
uTools_1638263634505
uTools_1638263678360
uTools_1638263678360
1638263378425
1638263378425

核心特征

uTools_1638263546216
uTools_1638263546216

6.5.2 B树的实现

二叉排序树的类型表述(与二叉树一样)(二叉树的链式存储)

typedef struct TreeNode{
	int data;                   //数据域
	struct BiTNode *lchide, *rchild; //左、右孩子指针
}BSTNode, *BSTree;

B树的类型表述(m叉查找树)

typedef struct TreeNode{
	int datas[m-1];                   //zui
	struct BiTNode *child[m];         //左、右孩子指针
}BSTNode, *BSTree;

5叉查找树

uTools_1638262837463
uTools_1638262837463

6.5.3 查找效率分析

保证查找效率:

每个结点的关键字太少,导致树变高,查找效率就会下降。

uTools_1638262966104
uTools_1638262966104
uTools_1638263106933
uTools_1638263106933

B树的高度

最小高度:

uTools_1638263978037
uTools_1638263978037

最大高度:

uTools_1638264247752
uTools_1638264247752

综上,高度为:

uTools_1638264294898
uTools_1638264294898

6.5.4 B树的插入

插入满一个结点后,从中间拆开,让中间位置(m/2\lceil m/2 \rceil)向上产生父结点,两边成为其孩子结点,依次类推

B tree
B tree
img
img

6.5.5 B树的删除

情况一:删除非终端结点中的关键字

1638265769766
1638265769766
1638265769770
1638265769770

情况一:删除终端结点中的关键字

①删除33时右边结点够借:

1638265769762
1638265769762
1638265769749
1638265769749
1638265769758
1638265769758
1638265769753
1638265769753

②删除49时,右边的结点不够借:

解决方法:将父结点中夹的关键字取下与左右孩子合并

1638265769745
1638265769745