建置最大堆积(Max Heap)树的过程与建置最小堆积树类似,但是要保证每个父节点的值大于其子节点的值。我们将按照给定的数据序列逐一插入元素到堆中,并在每次插入后通过上浮(percolate up)操作确保堆的性质得以维护。
给定数据序列为:12, 10, 7, 23, 13, 6, 15, 17, 46, 3。
下面是依序插入过程中,最大堆积树的变化:
插入12:
12
12
插入10:
12
,
10
12,10
插入7:
12
,
10
,
7
12,10,7
插入23:
23
,
12
,
7
,
10
23,12,7,10
插入13:
23
,
13
,
7
,
10
,
12
23,13,7,10,12
插入6:
23
,
13
,
7
,
10
,
12
,
6
23,13,7,10,12,6
插入15:
23
,
13
,
15
,
10
,
12
,
6
,
7
23,13,15,10,12,6,7
插入17:
23
,
17
,
15
,
13
,
12
,
6
,
7
,
10
23,17,15,13,12,6,7,10
插入46:
46
,
17
,
23
,
13
,
12
,
6
,
7
,
10
,
15
46,17,23,13,12,6,7,10,15
插入3:
46
,
17
,
23
,
13
,
12
,
6
,
7
,
10
,
15
,
3
46,17,23,13,12,6,7,10,15,3
在每次插入操作之后,我们通过比较新插入节点与其父节点的值,并在必要时进行交换,以确保每个父节点的值都大于其子节点的值。这样,我们就得到了满足最大堆性质的堆积树。
最终的最大堆积树的数组表示如下:
46
,
17
,
23
,
13
,
12
,
6
,
7
,
10
,
15
,
3
46,17,23,13,12,6,7,10,15,3
这表示根节点是最大的元素,每个父节点的值都大于或等于其子节点的值,满足最大堆的性质。