9、将关键字序列{96,83,27,38,11,09}构建大根堆,要求: (1)请画出构建的堆的图示; (2)从构建好的堆中删除根节点,画出删除根节点后的堆 (3)在第二步的基础上添加一个新节点 85,画出最新的大根堆
时间: 2024-03-08 14:46:07 浏览: 80
好的,让我来回答你的问题。
首先是构建堆的过程:
1. 从最后一个非叶子节点开始,依次向上调整堆,使得每个节点的值都大于等于其子节点的值。
- 最后一个非叶子节点的下标为 (n/2)-1,其中 n 为关键字序列的长度,即 n=6。
- 对于本题,最后一个非叶子节点的下标为 1,即关键字 83 的下标。
2. 调整完成后,整个堆就构建完成了。构建好的堆的图示如下:
```
96
/ \
83 27
/ \ /
38 11 09
```
接下来是删除根节点的过程:
1. 将根节点 96 和最后一个叶子节点 09 交换位置。
2. 将交换后的最后一个叶子节点 09 删除。
3. 从新的根节点 09 开始,向下调整堆,使得每个节点的值都大于等于其子节点的值。
4. 调整完成后,删除根节点的堆的图示如下:
```
83
/ \
11 27
/
38
```
最后是添加新节点的过程:
1. 将新节点 85 添加到最后一个叶子节点的位置。
2. 从新的最后一个非叶子节点开始,向上调整堆,使得每个节点的值都大于等于其子节点的值。
3. 调整完成后,添加新节点后的堆的图示如下:
```
85
/ \
83 27
/ \ /
38 11 09
```
希望我的解答能够帮助到你。
相关问题
一组记录关键字为(5,11,7,2,3,17),如何利用堆排序方法建立初始大根堆,给出你建立的初始大根堆对应的关键字序列。
可以按照以下步骤建立初始大根堆:
1. 将记录依次插入一个空堆中,此时堆中只有一个元素,直接返回该元素,即为初始大根堆。
2. 从第二个元素开始,依次将元素插入初始大根堆中。
3. 每次插入一个元素时,将该元素放在堆的最后一个位置,然后比较该元素与其父节点的大小关系,如果该元素大于其父节点,则将该元素与其父节点交换位置。
4. 重复步骤3,直到该元素不再大于其父节点,或者到达堆顶。
根据上述步骤,可以得到以下初始大根堆对应的关键字序列:
17, 5, 11, 2, 3, 7
将关键字 6、9、1、5、8、4、7 依次插入到初始为空的大根堆 H 中,得到的 H 是:
初始为空的大根堆 H,即为空树,我们按照以下步骤依次插入关键字:
1. 插入关键字 6,此时 H 只有一个节点,关键字为 6。
2. 插入关键字 9,此时 H 有两个节点,根节点为 9,子节点为 6。
3. 插入关键字 1,此时 H 有三个节点,根节点为 9,左子节点为 6,右子节点为 1。
4. 插入关键字 5,此时 H 有四个节点,根节点为 9,左子节点为 6,右子节点为 1,1 的左子节点为 5。
5. 插入关键字 8,此时 H 有五个节点,根节点为 9,左子节点为 8,右子节点为 1,1 的左子节点为 5,6 的左子节点为 4。
6. 插入关键字 4,此时 H 有六个节点,根节点为 9,左子节点为 8,右子节点为 1,1 的左子节点为 5,6 的左子节点为 4,6 的右子节点为 7。
7. 插入关键字 7,此时 H 有七个节点,根节点为 9,左子节点为 8,右子节点为 1,1 的左子节点为 5,6 的左子节点为 4,6 的右子节点为 7,7 的左子节点为 6。
最终得到的大根堆 H 为:9, 8, 1, 5, 6, 4, 7。
阅读全文