一个节点的两个孩子是几号

同样三个函数,下标从 0 开始(堆顶是 0 号)。把 1 号的左右两个孩子拼起来输出,中间用 / 隔开。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

新元素先放哪儿

第 1 步:已有的堆:24 17 15 13 第 2 步:新来的 23 放在最后 第 3 步:比父亲 17 大:要上浮 第 4 步:和父亲换位置 第 5 步:再比 24:不比它大,停 第 6 步:又是一个合法的堆 24 17 15 13 2

开始练习 →

放完之后要做什么(C++)

新元素放到末尾之后,接着要【0】。

开始练习 →

上浮什么时候停(C++)

上浮的循环停下来,是因为【0】。

开始练习 →

上浮最多走几步(C++)

插入一个元素,上浮最多走【0】步。

开始练习 →

插完五个数之后堆顶是几

把 17、24、15、13、23 依次插进一个空的大顶堆。运行下面这段程序: #include <algorithm> #include <iostream> #include <string> #inc

开始练习 →

自己写插入

补全 push_up:先放到末尾,再一路上浮。把五个数插完之后输出堆顶(堆空着的话输出 空)。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

插完之后整个数组长什么样

同一个 push_up。五个数插完之后,把整个数组拼起来输出(用 / 隔开)。注意末尾两个的大小关系——兄弟之间本来就没有要求。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

插入 23 时上浮了几次

补全 push_count(大顶堆:比父亲大就往上换),让它返回这次上浮换了几次。前四个数插完之后再插 23,输出这一次换了几次。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

取走堆顶之后拿什么补上

第 1 步:要拿走堆顶 24 第 2 步:末尾的 17 补到顶上 第 3 步:两个孩子里 23 大 第 4 步:17 和 23 换 第 5 步:17 比孩子 13 大:停 第 6 步:新堆顶是 23 24 23 15 13 17 24 23

开始练习 →