2-3-4 树什么时候不具有相同的结构?
When would a 2-3-4 tree not have the same structure?
我刚刚在我正在使用的数据结构教科书中看到这个问题,问题是
Give an example to show that the following claim is wrong: "A 2-3-4 tree storing a set of entries will always have the same structure, regardless of the order in which the entries are inserted."
我知道最好的情况是 O(log n),它比使用 BST 更好,但仅此而已,我似乎找不到合理的解释。如何证明这个说法是错误的?
如果你制作了一棵树,有些叶子满了,有些叶子没有,那么你放置下一个节点的位置决定了另一片叶子是否会分裂。
所以,如果我们从插入 2,3,4,5 开始,那么根将分裂成一个有 2 个叶子的新根。一个将有 2 个值,一个将有 1 个。然后我们插入 1,6,其中一个叶子将被填满:
3
/ \
1,2 4,5,6
现在,如果我们插入0,什么都不会分裂,但如果我们插入7,右边的叶子会分裂。
当然,实际的数字并不重要,重要的是插入顺序与其排序顺序的关系,所以我们可以用相同的元素制作这两个不同的树。对于左边的树,我插入了 2,3,4,5,1,6,7,对于右边的树,我插入了 3,4,5,6,2,7,1
3,5 4
/ | \ / \
1,2 4 6,7 1,2,3 5,6,7
我刚刚在我正在使用的数据结构教科书中看到这个问题,问题是
Give an example to show that the following claim is wrong: "A 2-3-4 tree storing a set of entries will always have the same structure, regardless of the order in which the entries are inserted."
我知道最好的情况是 O(log n),它比使用 BST 更好,但仅此而已,我似乎找不到合理的解释。如何证明这个说法是错误的?
如果你制作了一棵树,有些叶子满了,有些叶子没有,那么你放置下一个节点的位置决定了另一片叶子是否会分裂。
所以,如果我们从插入 2,3,4,5 开始,那么根将分裂成一个有 2 个叶子的新根。一个将有 2 个值,一个将有 1 个。然后我们插入 1,6,其中一个叶子将被填满:
3
/ \
1,2 4,5,6
现在,如果我们插入0,什么都不会分裂,但如果我们插入7,右边的叶子会分裂。
当然,实际的数字并不重要,重要的是插入顺序与其排序顺序的关系,所以我们可以用相同的元素制作这两个不同的树。对于左边的树,我插入了 2,3,4,5,1,6,7,对于右边的树,我插入了 3,4,5,6,2,7,1
3,5 4
/ | \ / \
1,2 4 6,7 1,2,3 5,6,7