三元最大堆类似于二元最大堆,但节点有 3 个子节点,而不是 2 个子节点。一个三元堆可以用数组表示如下:根存放在第一个位置a[0],下一层的节点,从左到右,存放从a[1]到a[3 ]。树的第二层从左到右的节点从 [4] 位置开始存储。通过将 x 放在位置 a[n] 并将其向上推到树以满足堆属性,可以将项 x 插入包含 n 个项的 3 元堆中。
假设将元素 7、2、10 和 4 按此顺序插入到上述问题中找到的有效 3-ary 最大堆中,以下哪一项是表示结果堆的数组中的项目序列?
(一) 10, 7, 9, 8, 3, 1, 5, 2, 6, 4
(B) 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
(C) 10, 9, 4, 5, 7, 6, 8, 2, 1, 3
(D) 10, 8, 6, 9, 7, 2, 3, 4, 1, 5答案:(一)
说明:插入 7 后
9
/ | \
/ | \
7 6 8
/ | \
/ | \
3 1 5
插入 2 后
9
/ | \
/ | \
7 6 8
/ | \ /
/ | \ /
3 1 5 2
插入后 10
10
/ | \
/ | \
7 9 8
/ | \ / |
/ | \ / |
3 1 5 2 6
插入后 4
10
/ | \
/ | \
7 9 8
/ | \ / | \
/ | \ / | \
3 1 5 2 6 4
这个问题的测验