码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构之堆

时间:2020-05-24 15:13:48      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:targe   style   优先   image   alt   inf   最小   结构   ext   

堆(heap)

  • 定义

   堆是一种比较特殊的数据结构,它是利用完全二叉树的结构来维护一组数据,可以看做是一棵树的数组对象,说白了,堆就是用数组实现的二叉树。根据根节点的值还分为大根堆小根堆。在最大堆中,父节点的值比每一个子节点的值都要大。在最小堆中,父节点的值比每一个子节点的值都要小。例如下图就是一个大根堆:

                        技术图片

 

 

  • 堆和二叉树的区别

   虽然说堆是利用完全二叉树的结果来维护数据,但和二叉树还是有较大差别的:

    1. 节点的大小和顺序:在二叉树中,左子节点必须比父节点小,右子节点必须必比父节点大。但是在堆中并非如此。在最大堆中两个子节点都必须比父节点小,而在最小堆中,它们都必须比父节点大。
    2. 内存占用:普通树占用的内存空间比它们存储的数据要多,因为需要为节点对象分配指针;而堆只需要数组对象,不需要指针
    3. 搜索:在二叉树中搜索会很快,但是在堆中搜索会很慢。在堆中搜索不是第一优先级,因为使用堆的目的是将最大(或者最小)的节点放在最前面,从而快速的进行相关插入、删除操作。

 

     

数据结构之堆

标签:targe   style   优先   image   alt   inf   最小   结构   ext   

原文地址:https://www.cnblogs.com/javaisbest/p/12951028.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!