zoukankan      html  css  js  c++  java
  • 数据结构-堆的定义描述

    堆是什么?

    它是一种树形组织,使我们能迅速确定包含最大值(或最小值)的结点。

    具体来说,堆是一颗左平衡的二叉树。随着结点的增加,树会逐级从左到右增长。

    (左平衡是指,如果一棵平衡树的最后一层的所有叶子结点都在最靠左边的位置上,则称这棵树是左平衡的。)

    顺序特点

    堆状态的二叉树是“局部有序”的,任何一个结点与其兄弟结点之间都没有必然的顺序关系,但它与其父子结点有大小顺序关系。

    堆的分类

    最大值堆:子结点比父结点小,根结点是树中最大的结点。

    最小值堆:子结点比父结点大,根结点是树中最小的结点。

    表示方式

    对于堆来讲,比较好的表示左平衡二叉树的方式是,将结点通过“层级(水平)遍历”的方式连续存储到一个数组中。

    假设i是树中的某一结点,

        其父结点位于(i-1)/2处(忽略小树部分);

        左子结点位于2i+1处;

        右子结点位于2i+2处;

    这样的组织结构或方式对于堆来说非常重要,通过它我们能迅速定义堆的最后一个结点,最后一个结点指处于树中最深层最右端的结点。

  • 相关阅读:
    JavaScript 正则表达式中的特殊字符
    framework —— throttles(访问频率控制)
    framework —— permission(权限)
    framework —— auth认证
    算法——基础知识
    算法——解迷宫
    算法
    爬虫 ==》 同步调用
    asyncio模块
    Requests模块
  • 原文地址:https://www.cnblogs.com/idreamo/p/8545328.html
Copyright © 2011-2022 走看看