バイナリ ヒープの最小数を削除しようとしていますが、最小値を削除できるのは 1 回だけですが、もう一度削除しようとすると、0 が返されません。最小値がなくなったヒープだけが返されます。問題をデバッグしようとしましたが、何の利益も得られませんでした。私が見ていないものを見ることができる人がいたら、問題を理解するのを手伝ってくれませんか? 前もって感謝します。例、1-6 からヒープに挿入した後、ヒープに 5 6 1 2 3 4 があり、最小を削除すると 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;
}