数据结构-哈夫曼树的构造和哈夫曼编码06

哈夫曼树的构造和哈夫曼编码06

        哈夫曼编码的代码实现对于初学数据结构的同学可能会有些困难,没有必要灰心,其实没啥,学习就犹如攀登一座又一座的山峰,每当我们攻克一个难点后,回首来看,也不过如此嘛。我们要做的就是不断的去攀越学习上的山峰 不断的超越过去的自己。尤其是我们程序员,不进则退,中国最不缺的就是人,肯定不缺替代你的程序员,没有越老越吃香的程序员,中国的老程序员都去哪了?要么转管理,要么被淘汰转行了,当然还有一小部分成为技术专家 继续活跃在IT圈。时代在进步,技术在不断换代的更新,但是计算机一些固有的东西仍没有改变,编程语言只是我们手中的武器,我们唯有把内功修炼好,然后拿着利器 可以无往不胜!数据结构和算法就是我们程序员的内功修炼的一方面。
        假设有 n 个权值[W1,W2,….WN],构造有 n 个叶子的二叉树,每个叶子的权值是 n 个权值之一,这样的二叉树可以构造很多个,其中必有一个是带权路径长度最小的,这棵二叉树就称为最优二叉树或哈夫曼树。
1.构造哈夫曼树
下面是我亲手自己构造哈夫曼树的过程(请忽略字的难堪):
在这里插入图片描述
在这里插入图片描述
2. 哈夫曼编码
        首先我们来看这棵构造好的哈夫曼树:(经过左边路径为0,经过右边路径为1)
在这里插入图片描述
则有 A:11 B:001 C:011 D:101 ,后面的你们可自行写出。
WPL(A) = 2x5 = 10;
WPL(B) = 3x5 = 15;
WPL© = 3x4 = 12;
WPL(D) = 3x3 = 9;
WPL(E) = 4x2 = 8;
WPL(F) = 4x2 = 8;
WPL(G) = 4x2 = 8;
WPL(H) = 4x1 = 4;
WPL(I) = 4x1 = 4;
WPL(J) = 4x1= 4;

WPL = WPL(A)+WPL(B)+…+WPL(J) = 82;
所以上图哈夫曼树的带权路径长度 WPL即为82

下一节,用代码实现哈夫曼树。

发布了65 篇原创文章 · 获赞 6 · 访问量 1503

猜你喜欢

转载自blog.csdn.net/FairLikeSnow/article/details/104356934