解析:通常,引用一个数组元素可以鼡下标法,如a[p-a]形式,或指针法,如*(&a[i])的形式本题中a[9]=9,a[10]显然超出数组范围,注意,数组的下标是从0开始的。
这种题目还是楼上用画图的形式悝解起来简单直观
删除零号元素后,最后一个元素替换零号元素然后调用下滑调整算法。
删除堆顶元素以后要用最后一个元素替换
对於最小堆和最大堆而言删除是针对于根节点而言。对于删除操作将二叉树的最后一个节点替换到根节点,然后自顶向下递归调整。
刪除最小元素在根节点
所以将最后一个元素放到根节点,进行下沉操作(sink());
堆按照完全二叉树排列但不是完全二叉排序树
首先,题目有问题[0,21,43,95, 8 6,7] 原数组是这样才对得上号。
即先将堆的最后元素代替堆顶元素再和左右子树比较,与最小元素交換直至终结
最小堆删除堆顶后,用最小堆删除堆顶后用最后一个元素暂代堆顶一个元素暂代堆顶,删除顶元素后最后一个元素替换,而不是第二层中小的那个数替换上
记得是最后一个补到第一个挪走的元素
7上移再重新调整顺序。
删除堆顶元素后将最后一个元素暂放到堆顶,因为堆的数据由上层到下层的建值逐渐变小。所以将新得到的堆顶元素7依次与堆下层的元素相比较如果下层有比7小的,则選出其中的最小值与7交换依次到最底层,执行完毕新的堆序则产生。
题目不会做首先问问自己,这个概念还记得吗很多题不会做,很大原因是忘记了概念比如这道题,删除最小数后该把哪个数替换上。
起始为小顶堆因此根节点为0,第一层从左到右为2,1第三层從左到右为4395,第四层从左到右为867当0删除后,7变为根节点此时根节点的孩子为2和1,根节点为7的节点和1孩子节点交换位置即它的右孩子,然后7节点的孩子变为9和5,7和5交换因此最后变为1、2、5、4、3、9、7、8、6
我不会解这道题,求解!
step1:去掉0将最后一位放到第一位0的位置,此时非朂小堆
step2:将7与左右子节点中比较小的1交换。此时依然非最小堆
step3:将7与左右节点中最小的5交换,此时为最小堆
你对这个回答的评价是
你对这個回答的评价是?
你对这个回答的评价是
你对这个回答的评价是?
你对这个回答的评价是
下载百度知道APP,抢鲜体验
使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案