数据结构之霍夫曼树(Huffman Tree)概述及理解

霍夫曼树(Huffman Tree)

简介

霍夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。树的路径长度是从树根到每一结点的路径长度之和,记为WPL=(W1L1+W2L2+W3L3+…+WnLn),N个权值Wi(i=1,2,…n)构成一棵有N个叶结点的二叉树,相应的叶结点的路径长度为Li(i=1,2,…n)。可以证明霍夫曼树的WPL是最小的。

  • 叶子节点带权路径:叶子节点的权乘以路径
  • 树带权路径长度(WPL):叶子节点带权路径总和

实现思路

  1. 数据排序。

    image-20200308121628867

  2. 将最小的两个数组成二叉树,原数据的最小两个数删除,替换成改两个小数的和。

    image-20200308121225773

  3. 重复1,2步操作,直到只剩两个数,最终结果如下。

    image-20200308121727328

霍夫曼编码(Huffman Coding)

猜你喜欢

转载自blog.csdn.net/qq_36325121/article/details/105024851