一.前言 之前用java实现堆结构,一直用的优先队列,但是在实际的面试中,可能会要求用数组实现,所以还是用java老老实实的实现一遍堆结构吧. 二.概念 堆,有两种形式,一种是大根堆,另一种是小根堆.堆,一般是二叉树,这个概念当然也可以扩展到k叉树.大根堆指的是根节点的值要大于左子树和右子树所有节点值,堆的子树也是堆.小根堆的概念同理可知. 三.实现过程 堆的形式是一棵树,但是我们可以用数组来实现它,父节点和孩子节点的父子关系通过数组下标来确定. 它的左右孩子节点和父节点的位置,如上图所示. 在…