zoukankan      html  css  js  c++  java
  • 堆的定义

    堆(heap),这里所说的堆是数据结构中的堆,而不是内存模型中的堆。堆通常是一个可以被看做一棵树。

    常见的堆有二叉堆、左倾堆、斜堆、二项堆、斐波那契堆等等。

    性质:

    [性质一] 堆中任意节点的值总是不大于(不小于)其子节点的值;

    [性质二] 堆总是一棵完全树。

    二叉堆的定义:二叉堆是完全二元树或者是近似完全二元树,它分为两种:最大堆和最小堆。

    将任意节点不小于其子节点的堆叫做最大堆或大根堆。

    最大堆:父结点的键值总是大于或等于任何一个子节点的键值;

    将任意节点不大于其子节点的堆叫做最小堆或小根堆

    最小堆:父结点的键值总是小于或等于任何一个子节点的键值。

    左倾堆:

    它和二叉堆一样,都是优先队列实现方式。当优先队列中涉及到"对两个优先队列进行合并"的问题时,二叉堆的效率就无法令人满意了,

    而左倾堆,则可以很好地解决这类问题。

    斜堆:

    二项堆:

    二项堆是二项树的集合。在了解二项堆之前,先对二项树进行介绍。

    二项树是一种递归定义的有序树。它的递归定义如下:
    (1) 二项树B0只有一个结点;
    (2) 二项树Bk由两棵二项树B(k-1)组成的,其中一棵树是另一棵树根的最左孩子。

    斐波那契堆:

    它和二项堆一样,也是一种可合并堆;可用于实现合并优先队列。斐波那契堆比二项堆具有更好的平摊分析性能,它的合并操作的时间复杂度是O(1)。
    与二项堆一样,它也是由一组堆最小有序树组成,并且是一种可合并堆。
    与二项堆不同的是,斐波那契堆中的树不一定是二项树;而且二项堆中的树是有序排列的,但是斐波那契堆中的树都是有根而无序的。

  • 相关阅读:
    牛客网暑期ACM多校训练营(第九场)D
    有向图欧拉回路个数 BEST定理
    BZOJ 4894 有向图 外向生成树个数
    HDU 3364 高斯消元
    HDU 6437 最(大) 小费用最大流
    高斯消元 模板
    无向图生成树计数 基尔霍夫矩阵 SPOJ Highways
    HDU 6397 组合数学+容斥 母函数
    第三章 数据表示法
    第二章 二进制数值和记数系统
  • 原文地址:https://www.cnblogs.com/Sky-Aces/p/8437107.html
Copyright © 2011-2022 走看看