最小堆和最大堆图示:
二,堆结构的基本操作
1.堆结构的表示
堆结构经常使用一个数组来实现,树的根是数组的第一个元素。...数组属于顺序存储,比使用了指针的链式存储节省空间,且不需要为左/右子节点指针分配内存空间。...使用数组表示堆结构和二叉树中的方法一样,假如堆结构中的一个节点,索引为N,可以得到:
父节点的索引:N // 2(整除)
左子节点的索引:N * 2 或 N * 2 + 1
右子节点的索引:N * 2...如果已有节点,在末尾插入新节点(从左到右的最后一个节点)。
step.02: 执行数组的堆化。...图示样例:
原始数组: [9, 4, 7, 1, 3, 2, 5]
删除的元素:4
最终结果: [9, 5, 7, 1, 3, 2]
三,代码实现
Python实现
def heapify(arr,