在对上一个问题的正确答案进行两次删除操作后,数组的内容是什么?
(A) 14,13,12,10,8
(B) 14,12,13,8,10
(C) 14,13,8,12,10
(D) 14,13,12,8,10答案: (D)
说明:对于堆树,删除节点包括以下两个操作。
1)将根替换为最后一级的最后一个元素。
2)从根开始,从上到下堆积整个树。
让我们一一删除两个节点:
1)删除25:
用12代替25
12
/ \
/ \
14 16
/ \ /
/ \ /
13 10 8
由于根违反了堆属性(16大于12),因此将16设为树的根。
16
/ \
/ \
14 12
/ \ /
/ \ /
13 10 8
2)删除16:
将16替换为8
8
/ \
/ \
14 12
/ \
/ \
13 10
从根到底进行堆肥。
14
/ \
/ \
8 12
/ \
/ \
13 10
14
/ \
/ \
13 12
/ \
/ \
8 10
这个问题的测验