https://i.imgur.com/VzeIzuP.jpg
https://i.imgur.com/cgkUI51.jpg
如图,为什么要加一个k=tree[i].key
tree[i]本身不就是节点值了吗
而且后面tree[j/2]=tree[j]又没加key了
整个超怪,而且我看板上之前的讲义都没有这个.key
所以其实可以不用加对吧?
跪求大大回复,500p奉上,想了一个
晚上= =
作者:
mathtsai (mathtsai)
2022-11-23 17:53:00虽然不知道这是什么语言但是tree[j]指的应该是该nodetree[j].key位该node存的key值
是pascal语法,意思是大大说的那样没错,所以说tree[i]是node的位址吗 ,可是这样为什么tree[j/2]=tree[j]不用加.key,不是要把儿子的值给爸爸吗,没加是变成儿子的位址给爸爸?
作者:
mathtsai (mathtsai)
2022-11-23 18:07:00把里面的值换掉就可以了另外j/2不就是i吗?
是i没错,不好意思,把里面的值换掉具体来说是什么意思
作者:
mathtsai (mathtsai)
2022-11-23 18:12:00他这样写就是把node交换,实际上把里面的值交换就可以
作者:
mathtsai (mathtsai)
2022-11-23 18:19:00喔 说错了 j/2不一定是i因为他没去更新i的值 更正一下可以去看CLRS里面heapify是怎么做的比较好懂
应该说第一次j/2是i 做第二次就是j的父点(j会往下钻好的 我去研究看看 感恩
tree[i]应该是指index tree[i].key是index中的值我的理解是这样