作业帮 > 综合 > 作业

数据结构(C语言版)中,树和二叉树中的Huffman树编码的大体框架是什么

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/04 05:20:06
数据结构(C语言版)中,树和二叉树中的Huffman树编码的大体框架是什么
书上的看的不怎么懂,概念有混淆,
树和二叉树:
二叉树是树的一种,还可以有三叉树、四叉树、……,以及混合叉树.
不过一般只讨论二叉树,这是最典型、最有用的数据结构.
Huffman树是一类带权路径长度最短的二叉树,在哈夫曼树中,权值越大的结点离根结点越近.
假设有n个权值,则构造出的哈夫曼树有n个叶子结点.n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:
(1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);
(2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和;
(3)从森林中删除选取的两棵树,并将新树加入森林;
(4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树.
Huffman树编码:以根为出发点,依次向下走到各个叶子结点为止.往下走时,选择走哈夫曼树的左分支生成0,走右分支则生成代码1,根结点到叶子结点路径上的0、1序列即为相应字符的编码.
这样讲可能有点抽象,你可以找本书,结合书上的图来看会更清楚一点.