【3月第四周学习记录】数据结构与算法王卓-第五章树和二叉树-哈夫曼树(基本概念篇)

1. 引入

【3月第四周学习记录】数据结构与算法王卓-第五章树和二叉树-哈夫曼树(基本概念篇)_第1张图片

为了操作数最低,应当将可能性最高的选项置于最先判断。

如下图,左边的算法相比右边的算法,仅改变了判断顺序,就减少了约1/3的判断次数。

【3月第四周学习记录】数据结构与算法王卓-第五章树和二叉树-哈夫曼树(基本概念篇)_第2张图片

针对以上问题,不同树的判别效率差距明显。

那么对于不同的问题,如何找到最优的判断树呢?这就是哈夫曼树 (最优二叉树) 的研究。

2.基本概念

术语

路径:结点A到结点B的所有分支称为路径

结点的路径长度:两结点间路径上的分支数

【3月第四周学习记录】数据结构与算法王卓-第五章树和二叉树-哈夫曼树(基本概念篇)_第3张图片 

树的路径长度:从树的根节点(树根)到每一个结点的路径长度之和。记作TL

例:结点数目均为9的两棵树,左边TL为20,右边TL为16。

可见结点数目相同的二叉树中,完全二叉树是路径长度最短的一种二叉树。(当完全二叉树的叶子结点移动到其他位置,TL仍为16不变,所以完全二叉树推不出是TL最短的二叉树,只能说其一)

【3月第四周学习记录】数据结构与算法王卓-第五章树和二叉树-哈夫曼树(基本概念篇)_第4张图片

权weight:给某结点赋予一个带有某种意义的数值,这个数值称为该节点的权

如第一节‘引入’中的例题,每种分数的人数所占的百分比

【3月第四周学习记录】数据结构与算法王卓-第五章树和二叉树-哈夫曼树(基本概念篇)_第5张图片

结点的带权路径长度:从结点到此结点的路径长度 与 该结点权重乘积 

树的带权路径长度:从树的根节点(树根)到所有叶子结点的路径长度*结点权重之和。记作WPL(weighted path length)

例:

【3月第四周学习记录】数据结构与算法王卓-第五章树和二叉树-哈夫曼树(基本概念篇)_第6张图片

于是,WPL可以作为一种算法复杂度的体现。

哈夫曼树

比较的前提是相同,所有的结点直接连在根节点上以获得最短的路径长度就没有比较的意义了。

【3月第四周学习记录】数据结构与算法王卓-第五章树和二叉树-哈夫曼树(基本概念篇)_第7张图片

例:

特点一:满/完全二叉树不一定是哈夫曼树

结点数相同的情况下,左上角为满二叉树,但不一定是哈夫曼树。 

特点二:权值最大的结点离树根最近

很好理解,让最大权值的路径最短

特点三:哈夫曼树不唯一

如下图,2,4可以分别为左子树,右子树,且这只是一种额外情况。

【3月第四周学习记录】数据结构与算法王卓-第五章树和二叉树-哈夫曼树(基本概念篇)_第8张图片

 

 

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