霍夫曼树(Huffman Tree)

文章目录

  • 霍夫曼树(Huffman Tree)
    • 简介
    • 实现思路
  • 霍夫曼编码(Huffman Coding)

霍夫曼树(Huffman Tree)

简介

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

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

实现思路

  1. 数据排序。

    霍夫曼树(Huffman Tree)_第1张图片

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

    霍夫曼树(Huffman Tree)_第2张图片

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

    霍夫曼树(Huffman Tree)_第3张图片

霍夫曼编码(Huffman Coding)

你可能感兴趣的:(算法,数据结构,算法)