📜  数据结构|堆|问题6

📅  最后修改于: 2021-06-28 20:32:39             🧑  作者: Mango

在对上一个问题的正确答案进行两次删除操作后,数组的内容是什么?
(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

这个问题的测验