数据结构第五章(堆、哈夫曼树、哈夫曼编码)

2023-11-19

什么是堆?

堆是按照一定顺序组织的完全二叉树

 

优先队列:特殊的“队列”,取出元素的顺序是依照元素的优先权(关键字)大小

                 而不是元素进入队列的先后顺序。

是否可以采用二叉树存储结构?可以,查找与删除的时间复杂度均为以2为底n的对数即log(2)n

二叉搜索树?

如果采用二叉树结构,应更关注插入还是删除?(删除)

       树结点顺序怎么安排?

       树结构怎样?

 

堆的两个特性:

结构性:用数组表示的完全二叉树

有序性:任意结点的关键字是其子树所有结点的最大值(或最小值)

       “最大堆”也称“大顶堆”:最大值

       “最小堆”也称“小顶堆”:最小值

堆中任一路径上的元素都是有序的

 

 

 

堆的应用“:堆排序

在堆删除操作中一个主要问题是  已知左边是个堆,右边是个堆,插入一个新元素,二叉树中元素该如何动

 

如何根据结点不同的查找频率构造更有效的搜索树?

 

带权路径长度(WPL):设二叉树有n个叶子结点,每个叶子结点带有权值W(k),从根节点到每个叶子结点的长度为l(k),则每个叶子结点的带权路径长度之和就是

 

 

哈夫曼树(也称最优二叉树)的定义:WPL最小的二叉树

 

哈夫曼树的特点

没有度为1的结点

N个叶子结点的哈夫曼树共有2n-1个结点

哈夫曼树的任意非叶节点的左右子树交换后仍是哈夫曼树

 

 

二叉树用于编码:

用二叉树进行编码

  1. 左右分支:0,1
  2. 字符只在叶节点上

对同一组权值{w1,w2,….,wn}是否存在不同构的两棵哈夫曼树呢?存在,比如

 

 

 

哈夫曼树的构造:

每次把权值最小的两棵二叉树合并,

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据结构第五章(堆、哈夫曼树、哈夫曼编码) 的相关文章

随机推荐

  • linux supervisor 配置及管理进程(包含docker容器内进程)

    按上篇文章 安装好supervisor之后 一 首先找到supervisord conf目录 一般在 etc supervisord conf 如果找不到 可以使用命令 sudo find etc name supervisord conf
  • 关于手机-电脑-手环使用的记录

    1 手机的设备管理器在哪 设置 安全 更多安全设置 设备管理器 2 手机24小时蓝牙 NFC开启会更加耗电吗 24小时全天开启蓝牙 NFC 结果发现 蓝牙的耗电量还不到0 01 NFC也只有0 02 完全可以忽略不计 3 honor20 p
  • 从数据类型 nvarchar 转换为 numeric 时出错

    请排查是不是你把数字类型的数据往字符类型数据库列中写 比如说 SELECT count 0 FROM sys user u LEFT JOIN sys dept d ON u dept id d dept id WHERE u del fl
  • Java使用Jsoup写爬虫

    Java使用Jsoup写爬虫 安装Jsoup jar 简单了解Jsoup Jsoup框架中的常用方法 动手实践 进阶写法 安装Jsoup jar 1 首先我们打开Jsoup官网 2 按照图片这里下载 3 打开IDEA去新建一个空白项目 4
  • Linux系统配置GIT的SSH秘钥

    Linux安装git git安装命令 apt get install git 安装完成 查看git的版本 git version 配置Git参数 git config global user name xxx xxx为自己用户名 git c
  • mac下python安装lxml失败

    作者 张自玉 链接 https www zhihu com question 30047496 answer 76115376 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 首先请确认安装了xcode co
  • 解决word中公式与右编号上下不居中的问题

    1 如图所示 选中右编号敲击公式后 公式与右编号上下不居中 2 在开始 样式 中找到如下图所示的样式 右击 修改 3 进入段落 修改如下图示 然后点击确定 在应用修改后的样式 就好了
  • 6-2 单链表结点删除(20 分)_单链表的删除节点的两种方式——还是双指针和链表覆盖好用

    6 2 单链表结点删除 20 分 本题要求实现两个函数 分别将读入的数据存储为单链表 将链表中所有存储了某给定值的结点删除 链表结点定义如下 struct ListNode int data ListNode next 函数接口定义 str
  • matlab table型数据的导入&使用

    举个例子看看 有一个文本数据如下 第一行内容视为列名称 T readtable csv table txt 访问其中的内容 LastName T LastName 数据部分 data part table2array T 3 end 拓展
  • GDB多线程调试常用命令

    gdb调试命令 step和next的区别 当前line有函数调用的时候 next会直接执行到下一句 step会进入函数 查看内存 gdb p a 打印变量地址 gdb x 0xbffff543 查看内存单元内变量 0xbffff543 0x
  • error: No rule to make target `c:/Users/Administrator/Desktop/LED_mainWindow/pcb_view.ui', needed by

    qt编译的时候出现error 但是程序没有错 在不同的电脑上可能报错 error No rule to make target c Users Administrator Desktop LED mainWindow pcb view ui
  • DNG格式解析

    Author Maddock Date 2015 04 22 转载请注明出处 http www cnblogs com adong7639 p 4446828 html DNG格式基本概念 DNG格式是在TIFF的基础上扩展出来的 要了解D
  • 上拉电阻和下拉电阻

    一 定义 上拉电阻 将一个不确定的信号 通过一个电阻与电源VCC相连 固定在高电平 下拉电阻 将一个不确定的信号 通过一个电阻与地GND相连 固定在低电平 二 作用 提高输出信号驱动能力 确定输入信号电平 防干扰 限流 阻抗匹配 抗回波干扰
  • 项目3:(9)与安川控制器P3000通信模块代码

    1 common h 通信传输的IP地址 typedef struct char serverIp 16 int iPort CONNINFO 定义连接信息数据结构 定义发送数据的结构体 typedef struct double R Bo
  • 机器学习:深入理解 LSTM 网络 (一)

    Recurrent Neural Network Long Short Term Memory Networks LSTMs 最近获得越来越多的关注 与传统的前向神经网络 feedforward network 不同 LSTM 可以对之前的
  • 将一条直线朝着划线方向进行偏移

    写了一个将一条link朝着划线方向偏移一定的距离 供参考 def cal poi geom1 geom2 dis 将一条直线link朝着划线方向偏移 param geom1 param geom2 param dis return dis
  • 0动态规划中等 NC206 跳跃游戏(二)

    NC206 跳跃游戏 二 描述 给定一个非负整数数组nums 假定最开始处于下标为0的位置 数组里面的每个元素代表下一跳能够跳跃的最大长度 如果可以跳到数组最后一个位置 请你求出跳跃路径中所能获得的最多的积分 1 如果能够跳到数组最后一个位
  • 信息系统项目管理师学习笔记

    信息系统项目管理师学习笔记 信息化从小到大分为以下5个层次 产品信息化 企业信息化 产业信息化 国民经济信息化 社会生活信息化 国家信息化体系包括6要素 1 信息技术应用 2 信息资源 3 信息网络 4 信息技术和产业 5 信息化人才 6
  • Javascript高级应用:文件操作篇

    Javascript是网页制作中离不开的脚本语言 依靠它 一个网页的内容才生动活泼 富有朝气 但也许你还没有发现并应用它的一些更高级的功能吧 比如 对文件和文件夹进行读 写和删除 就象在VB VC等高级语言中经常做的工作一样 怎么样 你是否
  • 数据结构第五章(堆、哈夫曼树、哈夫曼编码)

    什么是堆 堆是按照一定顺序组织的完全二叉树 优先队列 特殊的 队列 取出元素的顺序是依照元素的优先权 关键字 大小 而不是元素进入队列的先后顺序 是否可以采用二叉树存储结构 可以 查找与删除的时间复杂度均为以2为底n的对数即log 2 n