

在以上的三叉树中,6和10作为树根(root)结点上数据域的值(key).
a.如果要查找一个key是<6,那么访问左子树(left branch).
b.如果要查找一个key是在6和10之间,那么访问中子树(middle branch)
c.如果要查找一个key是>10,那么访问右子树(right branch)
我想,这个数据结构的结点的存储结构是这样的:
Data1 | Data2 | Pointer1 | Pointer2 | Pointer3 |
但是关于对一组元素的插入和删除,自己就不太明白了,求各位帮帮忙!
我想是这样的~~~
每次插入到除了叶子节点之外的最下一层;然后作以下判断:如果插入后键值个数<=2,那么ok;如果>2那么则要把这个节点分裂成两个,将中间那个键值上提到父节点中;在转向父节点检查直到没有矛盾。
[此贴子已经被作者于2004-11-21 18:03:49编辑过]
删除的时候分两种情况:
1.被删的节点在最下面一层(叶结点的上面一层)。2.不是最下面一层
如果是第一种情况那当然比较好做了,1)如果删除后键值数仍为一个或两个时候就ok;2)如果山出前就只有一个键值 ,而左右邻居都多于1个,则“借”一个过来;3)如果左右邻居只有一个键值,那么合并成一个节点。
关于第二种情况,我也说不怎么清楚,好像是将要删除的那个节点的柚子树中的最做节点“代替”他,然后将要删的节点下放到最后一层,下放的过程中再考虑1中的三种情况,再做的吧,楼主还是再问问高手吧
[此贴子已经被作者于2004-11-21 18:16:17编辑过]
对多路查找的描述:
1.从一个结点开始,当结点中的数据大于某一个常数K时,则进行"分裂",分裂后生成其他的结点,在分裂过程中产生了多叉树.
2.在分裂过程中,产生的树中的结点的数据,比如:根(root),叶子(leaf)中的数据到底应该存放什么样的数据,这就要调整了,所以多路查找的关键就在于调整数据,让数据存入该存的结点里.
3.多路查找被用于Windows中的文件查找技术中,原因就在于多路查找生成的树很宽,很矮,相对于二叉树而言,很扁平.当使用多路查找时,可以缩短查找时间,提高查找效率(相对于二叉查找而言).
这些是听老师说得,但是老师建议,这种数据结构很复杂的,老师也让我们不要再去做,转而去做其他的实验.,如果有兴趣的可以去看看多路查找的源代码,我也很想看看啊.
谁可以提供源代码啊?????????????