100分悬赏!! 恳求资料结构"2-3-4 tree"新增和删除的演算法!!

来源:百度知道 编辑:UC知道 时间:2024/05/31 16:20:39
各位大哥大姊们大家好!!

我有一个有关於"资料结构"方面的问题想要请教各位。

我想要请问各位,资料结构"2-3-4 tree"新增和删除的演算法为何??

用"中文解说"或"程式码"来回答都可以噢!!

希望各位能够替我解答,回答得愈详细愈好噢!!

那麼就万事拜托了!! 谢谢各位!!
P.S. 可以的话,请举例说明。因为这样我才比较容易了解!!

定义
一棵 2-3 树必须符合下列几项定义:

(1) 2-3 tree 中的节点可以存放一笔或两笔资料。
(2) 若节点中存放了一笔资料 Ldata.key ,其必须存在两个子节点-左子节点与中子节点。
假设资料 Ldata 的键值为 Ldata.key ,则:
(a) 左子节点所存放的资料键值必须小於 Ldata.key 。
(b) 中子节点存放的资料键值必须大於 Ldata.key 。

(3) 若节点中存放了两笔资料 Ldata 与 Rdata ,则会存在三个子节点-左子节点、中子节点与右
子节点。
假设资料 Ldata 、Rdata 的键值分别为 Ldata.key 与 Rdata.key,则:
(a) Ldata.key < Rdata.key 。
(b) 左子节点所存放的资料键值必须小於 Ldata.key 。
(c) 中子节点所存放的资料键值必须大於 Ldata.key 和小於 Rdata.key 。
(d) 右子节点所存放的资料键值必须大於 Rdata.key 。

(4) 树中的所有树叶节点必须为同一阶度 ( Level ) 。

特性
(1) 有 n 个元素的 2-3 tree 之高度介於 [ log3( n+1 ) ] 和 [ log2( n+1 ) ]。
(2) 在高度为 h 的 2-3 tree 中,元素的个数介於 2h - 1 到 3h - 1 。
(3) 在 n 个元素的 2-3 tree 中,插入和删除需要时间为 O( log n ) 。

2-3 tree 加入的方法

由 2-3 tree 中开始搜寻,假如加入的资料键值在 2-3 tree 中找不到,则加入 2-3 tree 中,假设
加入的节点
1、该节点只有一笔资料,则直接加入。如下例

2、该节点已存