ITPub博客

首页 > IT职业 > IT图书 > 数据结构——堆

数据结构——堆

IT图书 作者:古月雪 时间:2021-09-09 09:11:45 0 删除 编辑

堆是一种完全二叉树(每个结点最多有两个子节点,且结点总是有限从最左边排列)。下图是一个最大堆(父节点总是比子节点大)。

需要注意的是左右两个子节点之间并没有确定的大小关系。
图片描述
最大堆

由于堆的定义,堆具有如下性质:

  • 位置为k的节点孩子节点位置为2k, 2k+1;
  • 位置为k的节点的父节点位置为[2/k]向下取整。

所以堆可以使用数组来存储。为了计算方便,一般把数组的第一个位置下标0空出来,从下标1开始放堆的元素。

代码地址
/**
 * 堆接口
 */
public interface IHeap {
    int size(); // 当前元素的长度
    boolean isEmpty(); // 判空
    void add(T data); // 添加
    T pop(); // 弹出堆顶元素
    T remove(int i); // 移除某位置元素
    T peek(); // 过去堆顶元素
}

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3711/viewspace-2808531/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-07-09

  • 博文量
    160
  • 访问量
    1175