数据结构 DEAP (双堆)的定义如下: DEAP 是一棵完全二叉树,它或者是一棵空树,或者满足下列特性:(1)树根不包含元素.(2)其左子树是一小堆( MINHEAP ),其右子树是一大堆 ( MAXHEAP ).(3)若右子树非空,设 i 是左子树的任一结点 j 是右子树中与 i 相应的结点.若这样的 j 结点不存在,则取 j 为右子树中与 i 的父结点相应的结点;结点 的关键字总是小于或等于结点 j 的关键字值。 a .给出在该 DEAP 中插入结点3后的结果; b .写出在 DEAP 中插入新结点的算法思路(不要求用伪 C 语言描述)。
时间: 2024-02-06 21:11:35 浏览: 142
a. 在 DEAP 中插入结点 3 后的结果如下图所示:
```
__0__
/ \
1 3
/ \ / \
7 8 9 10
```
b. 在 DEAP 中插入新结点的算法思路:
1. 首先将新结点插入到左子树的最后一个位置;
2. 如果新结点的值大于其父结点的值,将两者交换位置;
3. 如果新结点的值小于其右兄弟结点的值,将新结点与右兄弟结点交换位置,并将其上移至父结点位置;
4. 重复 2 和 3 直到找到新结点的正确位置。
阅读全文