【数据结构】基于树的查找法——B树(C语言)

1. m路查找树

与二叉排序树类似,可以定义一种“m叉排序树”,通常称为m路查找树
一棵m路查找树,或者是一棵空树,或者是满足如下性质的树:
① 结点最多有m棵子树,m-1个关键字,其结点结构如下图所示:
结点结构
其中,n为关键字的个数,Pi(0<=i<=n)为指向子树根结点的指针,Ki(1<=i<=n)为关键字。
② Ki<Ki+1,1<=i<=n-1
③ 子树Pi中的所有关键字均大于Ki且小于Ki+1,1<=i<=n-1
④ 子树P0中的关键字均小于K1,而子树Pn中的所有关键字均大于Kn
⑤ 子树Pi也是m路查找树,0<=i<=n
3路查找树

2. B树

一棵B树是一棵平衡的m路查找树,它或者是空树,或者是满足如下性质的树:
树中每个结点最多有m棵子树
根结点至少有两棵子树
除根结点之外的所有非叶结点至少有⌈m/2⌉棵子树
④ 所有的叶结点出现在同一层上,并且不含信息,通常称为失败结点。失败结点为虚结点,在B树中并不存在,指向它们的指针为空指针。引入失败结点是为了便于分析B树的查找性能。

B树结点结构:
B树结点结构

typedef int KeyType;
/*B树结点存储结构*/
typedef struct Mbtnode {
   
	struct Mbtnode* parent;		//指向双亲结点的指针
	int keynum;					//结点关键字个数
	KeyType key[m + 1
  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值