Java Heapify函数:如何查找最后一个内部节点?
我正在尝试为优先级队列实现自底向上的二进制堆构造。到目前为止,我已经将所有值按任意顺序放入ArrayList,现在我想找到最后一个内部节点的元素#,然后在其上运行我的BubbleDown()函数,然后遍历堆中的每个内部节点 如何查找最后一个内部节点的元素#?下面是该表的外观(N=堆中的元素数,LIN=最后一个内部节点的元素数):Java Heapify函数:如何查找最后一个内部节点?,java,heap,priority-queue,Java,Heap,Priority Queue,我正在尝试为优先级队列实现自底向上的二进制堆构造。到目前为止,我已经将所有值按任意顺序放入ArrayList,现在我想找到最后一个内部节点的元素#,然后在其上运行我的BubbleDown()函数,然后遍历堆中的每个内部节点 如何查找最后一个内部节点的元素#?下面是该表的外观(N=堆中的元素数,LIN=最后一个内部节点的元素数): 显示代码。最后一个内部节点是什么无法运行heapify来heapify所有元素。您需要在每次插入优先级队列后运行它。换句话说,运行一次heapify不会使您的收集成为优
显示代码。最后一个内部节点是什么无法运行heapify来heapify所有元素。您需要在每次插入优先级队列后运行它。换句话说,运行一次heapify不会使您的收集成为优先队列。好吧,也许我使用了错误的术语。这是从头开始构建堆。顶部节点是元素1,然后是2 3,然后是45 67,然后是89 1011 1213 1415,其中每个子节点都是父节点的元素2n或2n+1。最后一个内部节点是指最后一个不是叶子的元素。作为一个例子,如果N=15,那么叶子是89101112131415,最后一个内部节点是7。
N LIN#
2 1
3 1
4 3
5 3
6 3
7 3
8 7
9 7
10 7
11 7
12 7
13 7
14 7
15 7
16 15
etc etc