Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Heapify函数:如何查找最后一个内部节点?_Java_Heap_Priority Queue - Fatal编程技术网

Java Heapify函数:如何查找最后一个内部节点?

Java Heapify函数:如何查找最后一个内部节点?,java,heap,priority-queue,Java,Heap,Priority Queue,我正在尝试为优先级队列实现自底向上的二进制堆构造。到目前为止,我已经将所有值按任意顺序放入ArrayList,现在我想找到最后一个内部节点的元素#,然后在其上运行我的BubbleDown()函数,然后遍历堆中的每个内部节点 如何查找最后一个内部节点的元素#?下面是该表的外观(N=堆中的元素数,LIN=最后一个内部节点的元素数): 显示代码。最后一个内部节点是什么无法运行heapify来heapify所有元素。您需要在每次插入优先级队列后运行它。换句话说,运行一次heapify不会使您的收集成为优

我正在尝试为优先级队列实现自底向上的二进制堆构造。到目前为止,我已经将所有值按任意顺序放入ArrayList,现在我想找到最后一个内部节点的元素#,然后在其上运行我的BubbleDown()函数,然后遍历堆中的每个内部节点

如何查找最后一个内部节点的元素#?下面是该表的外观(N=堆中的元素数,LIN=最后一个内部节点的元素数):


显示代码。最后一个内部节点是什么无法运行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