我也觉得有问题, 不过我的答案跟楼主也不同。。。附上我的答案:
好像牛客网目前有点小问题, 图片传不上来
我用数组的方式表示:  从A.length/2 = 8/2 = 4 也就是 数字1开始调整
   45301726 -> 45301726 -> 45361720 -> 45761320 -> 46751320 -> 76451320

附上代码:
 public int[] heapSort(int[] A, int n) {
        for(int i=(n-1)/2;i>=0;--i){    //将数组初始化为堆
            heapAdSort(A,i,n);
        }
        print(A);  
  //只要初始化部分,后面代码注释掉
   /*     for(int i=n-1;i>0;--i){ 
            int temp = A[i];
            A[i] = A[0];
            A[0] = temp;
            heapAdSort(A,0,i);
        }
*/
        return A;
    }
 public void heapAdSort(int[] A,int i,int n){//A为数组,i为结点值,n为数组长度
        int child = 2 * i + 1; //左孩子
        int temp = A[i];//保存节点值
        while(child < n){ 
            if(child+1 < n && A[child] < A[child+1]){// 把child节点指向左右孩子中较大的一个
                child ++ ;
            }
            if(A[i] < A[child]){//如果节点小于孩子值,则交换,节点向下
                 A[i]=A[child];
                i = child;
                child = 2*i+1;
            }else{
                break;
            }
            A[i] = temp;//将节点保存;
        }
    }

    public void print(int[] A){
    for(int i:A){
    System.out.print(i+" ");
    }
       System.out.println();
    }