`
Regina_N
  • 浏览: 3645 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

构建哈夫曼树

    博客分类:
  • java
阅读更多
内容拓展:
树形结构包括:
退化树(链表)
二叉树
哈夫曼树
满二叉树
完全二叉树
平衡二叉树
表达式树
红黑树
B+
B-
AVL
...

1.二叉树的组成
根节点
子节点(左字节点,右子节点,双亲节点)
叶子节点(终端节点)

树的最大深度:有少层深度就是多少
树的最大宽度:有多少个叶子节点

2.哈夫曼二叉树的特点
最优的带权路径。
根节点到叶子节点的路径长度*权重之和
路径:从根节点到叶子节点的路径长度
路径长度就是深度-1

3.编程实现
1.输出哈弗曼树及码表
2.将哈夫曼二叉树绘制到界面上(见《绘图项目》)


首先定义节点类
定义的数据域为一个Data类 用来存储字符和字符的频率
以下为Node类和Data类


接下来定义HFMtree类
实现步骤:
1.统计每一个字符出现的次数(频率)
2.将数据封装到节点中,再将节点存入到链表(数组队列)中
3.对链表中的数据根据次数进行排序
4.移除最小两个次数的节点对象,创建一个双亲节点,再将双亲节点添加到链表中
5.重复3,4;直到链表中只有一个节点的时候,那么该节点为哈夫曼二叉树的根节点。

6.遍历哈夫曼二叉树,输出信息





  • 大小: 22.8 KB
  • 大小: 16.2 KB
  • 大小: 27.9 KB
  • 大小: 23.9 KB
  • 大小: 29 KB
  • 大小: 14.6 KB
分享到:
评论

相关推荐

    构建哈夫曼树(可构造哈夫曼编码)

    给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短...使用数组构建哈夫曼树,并可用该树构造哈夫曼编码。

    头歌数据结构构建哈夫曼树及编码

    头歌数据结构构建哈夫曼树及编码 第1关构建哈夫曼树 第2关根据哈夫曼树构建哈夫曼编码 通过哈夫曼树的构造,深刻理解二叉树的构造。 通过哈夫曼编/译码过程,深刻领会二叉树的基本操作和二叉树的应用,熟练掌握...

    哈夫曼树c语言编写

    哈夫曼树构造 输出

    构建哈夫曼树和编码

    自己写的哈夫曼树还行 各位看官来下载吧 测试无错误

    建立哈夫曼树的代码(数据结构)

    printf("请输入树叶子结点的总数:"); scanf("%d",&n); t=2*n-1; printf("请输入各叶子结点的数值:"); for(j=1;j;j++) {scanf("%d",&r[j].data); r[j].tag=0; r[j].lch=0; r[j].rch=0; } i=0; while(i) {...

    课程设计哈夫曼树的应用

    一、课程设计题目:哈夫曼树应用 二、课程设计要求: 1) 从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树并将它存于文件hfmTree中.将已在内存中的哈夫曼树以直观的方式(比如树)显示在终端上; 2) 利用...

    数据结构 哈夫曼树

    首先根据给定的n个字符的权值构造哈夫曼树。通过遍历此二叉树完成各字符的哈夫曼编码,另输入一组‘0’、‘1’代码构成的报文将其翻译成对应的字符信息。

    数据结构输入字符串构建哈夫曼树

    输入字符串 构建哈夫曼编码和相应的树型结构

    哈夫曼树的构建与哈夫曼代码

    用户键盘输入若干个整数作为待编码字符的权值,程序建立哈夫曼树并输出各字符的哈夫曼编码。

    哈夫曼树的构建

    里面是哈夫曼树的基本操作, 适合初学者的模仿! 可能代码比较简单,有错的话,请见谅!

    哈夫曼树及其应用

    数据结构课程设计:哈夫曼树及其应用 文档 ++代码 构建哈夫曼树,编码,译码

    建立哈夫曼树 并用其编写解压和解压缩文件的程序

    1、根据给定的一个文本文件,读出其内容,统计各个字符出现的频度,建立哈夫曼树,求出各个字符的哈夫曼码;打印哈夫曼树形结构,然后对文件进行编码;最后,对编码后的文件在解码,对哈夫曼算法进行验证。 扩展功能...

    哈夫曼树及其的应用(数据结构试验)

    1.在二叉树基本操作的基础上,掌握对二叉树的一些其它操作的具体实现方法。 2.掌握构造哈夫曼树以及哈夫曼编码的方法。 3、熟练掌握哈夫曼树(最优二叉树)特征及其应用

    哈夫曼树及哈夫曼编码数据结构实验报告

    构建哈夫曼树,对其进行编码,实现译码功能,数据结构的实验报告。。

    哈夫曼树求最短路径

    上机后的代码,内容为构建哈夫曼树,并求最短编码长度。

    哈夫曼树构造及信息编码

    哈夫曼树的构造以及应用。其应用主要是信息编码。

    哈夫曼树应用STL栈的C++语言构建

    给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。...本资源通过传入数组的方式构建哈夫曼树,并实现构建后哈夫曼树的遍历

    数据结构实验二哈夫曼树及哈夫曼编码译码的实现

    构建哈夫曼树及哈夫曼编码,输出哈夫曼树及哈夫曼编码,完成编码与译码的算法。 (1)掌握树的有关操作算法 (2)熟悉树的基本存储方法 (3)学习利用树求解实际问题

    哈夫曼树和进行哈夫曼编码.pdf

    哈夫曼树与哈夫曼编码 // 定义哈夫曼树节点结构体 ...这段代码使用了注释来解释每个函数的作用,以及它们在构建哈夫曼树和进行哈夫曼编码过程中的作用。通过这些注释,你可以更清晰地了解代码的逻辑和实现细节。

    HuffMan【二叉树、树和哈夫曼树及其应用】

    数据结构的一个实验。里面包含:①二叉树生成②二叉树与树(双亲表示)的相互转换③哈夫曼编码关键代码有注释,希望能帮助大家。能给我反馈问题的,更谢谢啦!

Global site tag (gtag.js) - Google Analytics