Java中的自底向上堆

Java中的自底向上堆,java,algorithm,recursion,arraylist,heap,Java,Algorithm,Recursion,Arraylist,Heap,因此,我试图在这里实现AP算法: 谢谢 现在我假设H1和H2是堆还是节点 课堂讲稿的第一页上写着: “堆是一个二叉树H,它在其内部节点上存储一组密钥…” 这就是我在java中应该做什么的地方 实现这一点的方法不止一种,但最明显的表现形式是一个树类,它有一个值,并引用左、右子树 我不太确定它什么时候说的是根上的k。k不是根节点吗 它是当前调用ap创建的堆的根。请注意,该算法是递归的 如果是这样的话,我也会从k开始做一个向下堆的泡泡吗?那么在这一点上,H在最后也是k吗 它就是这么说的 我没有要发布

因此,我试图在这里实现AP算法:

谢谢

现在我假设H1和H2是堆还是节点

课堂讲稿的第一页上写着:

“堆是一个二叉树H,它在其内部节点上存储一组密钥…”

这就是我在java中应该做什么的地方

实现这一点的方法不止一种,但最明显的表现形式是一个树类,它有一个值,并引用左、右子树

我不太确定它什么时候说的是根上的k。k不是根节点吗

它是当前调用
ap
创建的堆的根。请注意,该算法是递归的

如果是这样的话,我也会从k开始做一个向下堆的泡泡吗?那么在这一点上,H在最后也是k吗

它就是这么说的

我没有要发布的代码,但是我得到的错误在递归调用的子列表中


除非你发布代码和错误,否则我们帮不了你多少忙。

是的,我就是这么做的。我必须在可能的时候发布我的代码。谢谢 Algorithm bottomUpHeap(S) Input: a sequence S storing 2h-1 keys Output: a heap H storing the keys in S if S is empty then return an empty heap remove the first key, k, from S Split S into subsequences S1 and S2, each of size (n-1)/2 H1¬ bottomUpHeap(S1) H2¬ bottomUpHeap(S2) Create binary tree H such with k at root, H1 at left subtree and H2 at right subtree Perform down-heap bubbling from root if necessary return H
private Tree Heapify(List<Integer> S){

    if (S.isEmpty()){
        Tree emptyHeap = new Tree();
        return emptyHeap;
    }
    
    int tmpk = S.get(0);
    S.remove(0);
    
    int halfArr = S.size()/2;

    List<Integer> S1 = S.subList(0, halfArr);
    List<Integer> S2 = S.subList(halfArr, S.size());
    
    Tree k = new Tree(tmpk, Heapify(S1), Heapify(S2));

    //Downheap.
    return null;
}