首页 > 解决方案 > 最小堆删除方法永远运行

问题描述

大家好,我是编码初学者,我写了这个方法 delete from min-heap 但它一直在运行,当我使用调试器时,答案是正确的,但程序不会终止。

public void delete(){
        int temp= array[0];
        array[0]=array[counter-1];
        array[counter-1]=0;
        counter=counter-1;
        int parentIndex = 0;
        int leftChildIndex = (parentIndex/2)+1;
        int rightChildIndex = (parentIndex/2)+2;
        while ((array[parentIndex] >= array[leftChildIndex] || array[parentIndex] >= array[rightChildIndex]  )){
            
            if(array[leftChildIndex]<array[rightChildIndex]){
                int t =array[parentIndex] ;
                array[parentIndex]= array[leftChildIndex] ;
                array[leftChildIndex]=t;
                parentIndex=leftChildIndex;
                leftChildIndex = (parentIndex/2)+1;
                rightChildIndex=(parentIndex/2)+2;
            }else {
                int t =array[parentIndex] ;
                array[parentIndex]= array[rightChildIndex] ;
                array[rightChildIndex]=t;
                parentIndex=rightChildIndex;
                leftChildIndex = (parentIndex/2)+1;
                rightChildIndex=(parentIndex/2)+2;
            }
        }
    }

标签: javadata-structures

解决方案


推荐阅读