设为首页 加入收藏

TOP

数据结构:堆(一)
2012-12-10 13:09:11 来源: 作者: 【 】 浏览:1814
Tags:数据结构

  堆常用来实现优先队列,在这种队列中,待删除的元素为优先级最高(最低)的那个。在任何时候,任意优先元素都是可以插入到队列中去的,是计算机科学中一类特殊的数据结构的统称

  一、堆的定义

  最大(最小)堆是一棵每一个节点的键值都不小于(大于)其孩子(如果存在)的键值的树。大顶堆是一棵完全二叉树,同时也是一棵最大树。小顶堆是一棵完全完全二叉树,同时也是一棵最小树。

  注意:

  堆中任一子树亦是堆。

  以上讨论的堆实际上是二叉堆(Binary Heap),类似地可定义k叉堆。

  下图分别给出几个最大堆和最小堆的例子:

 \
 


  二、支持的基本操作

  堆支持以下的基本操作:

  build: 建立一个空堆;

  insert: 向堆中插入一个新元素;

  update:将新元素提升使其符合堆的性质;

  get:获取当前堆顶元素的值;

  delete:删除堆顶元素;

  heapify:使删除堆顶元素的堆再次成为堆。

  某些堆实现还支持其他的一些操作,如斐波那契堆支持检查一个堆中是否存在某个元素。

  

     

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇数据结构_单调队列 下一篇C++将字符串转换成数字

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: