zoukankan      html  css  js  c++  java
  • 数据结构之堆

    堆(heap)

    • 定义

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

                            

    • 堆和二叉树的区别

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

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

         

  • 相关阅读:
    python无意中发现的
    mysql 中关于周和月份的表示
    列表表达式
    python编码
    bugfree安装
    python练习题代码
    根据用户名或者厂商名称生成相关的弱口令
    获取QQ企业邮箱通讯录PY脚本
    SQL注入POC
    乌云精华漏洞爬取匹配
  • 原文地址:https://www.cnblogs.com/javaisbest/p/12951028.html
Copyright © 2011-2022 走看看