哈夫曼树的基础知识

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

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)构建哈夫曼树可以从最小的结点由最底层向上构建。



目录
相关文章
|
1月前
|
存储 算法 关系型数据库
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
这篇文章主要介绍了多路查找树的基本概念,包括二叉树的局限性、多叉树的优化、B树及其变体(如2-3树、B+树、B*树)的特点和应用,旨在帮助读者理解这些数据结构在文件系统和数据库系统中的重要性和效率。
19 0
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
|
2月前
|
存储 C语言
数据结构基础详解(C语言): 树与二叉树的应用_哈夫曼树与哈夫曼曼编码_并查集_二叉排序树_平衡二叉树
本文详细介绍了树与二叉树的应用,涵盖哈夫曼树与哈夫曼编码、并查集以及二叉排序树等内容。首先讲解了哈夫曼树的构造方法及其在数据压缩中的应用;接着介绍了并查集的基本概念、存储结构及优化方法;随后探讨了二叉排序树的定义、查找、插入和删除操作;最后阐述了平衡二叉树的概念及其在保证树平衡状态下的插入和删除操作。通过本文,读者可以全面了解树与二叉树在实际问题中的应用技巧和优化策略。
|
5月前
|
存储 算法 Python
python常用算法(5)——树,二叉树与AVL树(一)
python常用算法(5)——树,二叉树与AVL树
|
5月前
|
机器学习/深度学习 存储
数据结构学习记录——哈夫曼树(什么是哈夫曼树、哈夫曼树的定义、哈夫曼树的构造、哈夫曼树的特点、哈夫曼编码)
数据结构学习记录——哈夫曼树(什么是哈夫曼树、哈夫曼树的定义、哈夫曼树的构造、哈夫曼树的特点、哈夫曼编码)
124 1
|
5月前
|
算法 Python
python常用算法(5)——树,二叉树与AVL树(二)
python常用算法(5)——树,二叉树与AVL树
|
5月前
|
存储 算法 Shell
python常用算法(5)——树,二叉树与AVL树(三)
python常用算法(5)——树,二叉树与AVL树
|
6月前
|
C++
图解哈夫曼树
图解哈夫曼树
|
6月前
|
存储 算法
【408数据结构与算法】—树和二叉树(二十七)
【408数据结构与算法】—树和二叉树(二十七)
|
存储 算法
树和二叉树基础概念
树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
|
存储
树和二叉树的基本概念和性质
树和二叉树的基本概念和性质