我试图删除我的二进制堆中的最小数字,我只能删除一次最小值,但是在我尝试再次删除它之后它返回 0,它不应该返回 0,只是最小数字消失的堆。我试图调试问题并没有从中获得任何收益。如果有人能看到我看不到的东西,你能帮我看看问题吗?先感谢您。例如,在我从 1-6 插入堆后,堆中将有 5 6 1 2 3 4,在我删除 min 后,它会打印出 2 3 4 5 6。但是如果我删除 Min 之后它会打印出 0 而不是3 4 5 6. 任何解决此问题的帮助将不胜感激。
public class BHeap {
public int RemoveMin(){
while( curr != null ) {
if( curr.key < found.key ){
found = curr;
p_o = prev;
}
prev = curr;
curr = curr.rightSibling;
}
this.root = merge(found.leftmostChild);
return result;
}