问题描述
我是数据结构的新手, 我想知道高度为3的3阶B树能有多少叶子?
假设根的高度为1。
我的意见: 当高度为1时,叶子的最少数量为2(根据定义),最大为3。
然后当它增长到2时,最大叶数变为6 然后增长到3,最大叶数变成9 然后,叶子的数量始终为9
有人可以帮我吗? 谢谢
解决方法
我假设您使用Knuth的叶子定义,即它们是不携带任何信息的NIL节点,以及Knuth的顺序定义,即内部节点可以拥有的最大子代数。
我的观点:当高度为1时,[n]片叶子的最少为2个(根据定义),最大为3个。
正确。
然后当它增长到2时,最大叶子数变为6
...仅当根有两个子代时,但这不是最大数。根可以有3个孩子,每个孩子可以有3个叶子,所以我们有3 x 3 = 9
然后增长到3,最大叶子数变为9,此后叶子数始终为9
我在这里失去了逻辑...高度为2的树的9片叶子中的每一个都可以变成带有三片新叶子的内部节点,所以我们得到9 x 3 = 27片叶子
将叶子的数量乘以少一高度即可最大化叶子的数量。
因此公式为:max(#leaves)= 3 h