采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
shift down这个函数向子节点依次进行了比较,有没有这种情况,如果堆的最后一个值比替换的节点两个子节点都要大,并且比这个替换节点的父节点也大,那么这个shift Down这个函数执行以后会不会打破最大堆的数据结构?
不会出现这种情况。
以课程介绍的最大堆为例,删除掉堆顶元素,将最后一个元素放到堆顶,进行 sift down,此时,整个树,除了堆顶的元素,一定依然满足最大堆的性质。即除了堆顶元素,所有的父亲节点一定比孩子节点大。
最后一个值也不可能比替换的节点两个子节点都要大,否则原来就不是最大堆。
你也可以尝试一下构造一下你说的情况,看是否会存在?
继续加油!:)
登录后可查看更多问答,登录/注册
课程专为:短时间内应对面试、升职测评等艰巨任务打造
8.7k 21
5.7k 3
4.9k 5
1.4k 18