假设我们有一组密钥K={1,2,3,4,5,6,…,15},我们需要从中构建一个2-4树,这样:
- CASE1:树的节点数最少
- CASE2:树的节点数最大
我的想法-
2-4树中的一个节点每个节点最多可以有3个密钥和4个子节点,如果我们需要最小化节点数量,我们需要尽可能保持节点满,但似乎无法找到保证这一点的策略。
一种似乎有利可图的方法是将数组拆分为三部分,然后在根处插入中值,接下来第一个和最后一个子项是预先确定的,并对其余的键重复相同的过程。这种方法似乎也不够。
我们知道,对于这样的结构,最坏情况下的高度需要在4附近,最好情况下的高需要在2附近(使用2,4树高属性h~log(n((
是否有任何策略来解决此类问题(如有任何提示,我们将不胜感激(?
要制作节点数最少的2-4树:
- 从N个键开始,的地板(N/4(需要是父母。选择这些键,尽可能均匀地分布,以确保它们的两侧各有2-3个键
- 对父项重复该过程,直到您最多拥有3个关键点为止。这些都是从根源开始的
因此,从15个关键点开始,在4个节点(3个父节点(中有12个叶级关键点。这三位家长可以从根本上解决问题。