哈夫曼树的基础知识

简介: 哈夫曼树的基础知识

1前言

这篇文章是对网友在文章的下的提问,做出的解答。


2问题描述

哈夫曼树相关的基础知识。


3哈夫曼树的定义

哈夫曼树(Huffman Tree):是在叶子结点和权重已经知道的情况下,带权路径长度最小的二叉树,哈夫曼树也被称为最优二叉树。

路径长度:从一个结点到另一个结点多经过的边数就被称为路径长度。

树的带权路径长度(WPL):所有叶子结点的权重*路径长度之和,就被称为书的带权路径长度。

下面我们来举个例子:

可知:从A结点到H结点经过三条边,所以路径长度是3,又因为H点的权重为4,所以H点的带权路径长度是3*4 = 12;树的带权路径长度是3*4 + 2*2 + 2*3 + 2*1 = 24。


4 构建一个哈夫曼树

由哈夫曼树的定义可知,权值越小的结点应该在越下层。

以下图四个结点为例(先将结点从小到大排好):

(1)选择两个最小的结点相加得到他们的父结点,并从结点列表中删除这两个结点,加入他们的父结点。

(2)再次选择两个最小的结点相加得到他们的父结点,并从结点列表中删除这两个结点,加入他们的父结点。

(3)重复上面的操作

(4)得到哈夫曼树

5总结

(1)哈夫曼树(Huffman Tree):

   是带权路径长度最小的二叉树

(2)树的带权路径长度(WPL):

   所有叶子结点的权重*路径长度之和,就被称为书的带权路径长度。

(3)构建哈夫曼树可以从最小的结点由最底层向上构建。



目录
相关文章
|
7月前
|
算法 C语言
【数据结构与算法】树、二叉树的概念及结构(详解)(上)
【数据结构与算法】树、二叉树的概念及结构(详解)(上)
|
18天前
|
C++
图解哈夫曼树
图解哈夫曼树
|
16天前
|
存储 算法
树——“数据结构与算法”
树——“数据结构与算法”
|
4月前
|
存储 算法 测试技术
数据结构与算法:树
数据结构与算法:树
28 0
|
4月前
|
算法
数据结构与算法之 树
二叉搜索树的使用
15 0
|
7月前
|
存储 算法
【数据结构与算法】树、二叉树的概念及结构(详解)(下)
【数据结构与算法】树、二叉树的概念及结构(详解)(下)
|
9月前
|
存储 算法
树和二叉树基础概念
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
|
11月前
|
存储
树和二叉树的基本概念和性质
树和二叉树的基本概念和性质
|
12月前
|
存储
哈夫曼树和哈夫曼编码的简单实现
哈夫曼树和哈夫曼编码的简单实现
|
12月前
|
存储 移动开发 算法
树和二叉树知识点总结
树和二叉树知识点总结
11630 0