第六章 树和二叉树D

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

⑤ ①—③
④ ⑨—(11)
相等=
大于>
小于<

(12) ⑨
⑩⑨

小于 <
大于相>等=小于大< 于>相等=小于大< 于>
(12) (12) 重轻
(11) ⑩ 重重
⑨ 重
(11) 轻
⑨ 轻
⑩ 轻
⑥⑦
相等= 大于> 小于<
①②
相等= 大于> 小于<
⑧ ⑥⑦ 轻 轻轻
③② ① 重重 重
6
什么是带权树? 即路径带有权值。例如:
5
5
2
6
4
10
1
4
3
10 7
9
8
(a)
2 13
67
(b)
8 9
想一想:对它中序遍历之后是什么效果?
4
什么是判定树?
举例: 12个球如何用天平只称3次便分出轻重?
分析: 12个球中必有一个非轻即重,即共有24种“次品”的可能性。 每次天平称重的结果有3种,连称3次应该得到的结果有33=27 种。 说明仅用3次就能找出次品的可能性是存在的。
便分出轻重)
带权树——特点:路径带权值(例如长度) 最优树——是带权路径长度最短的树,又称 Huffman树,
用途之一是通信中的压缩编码。
2
什么是平衡二叉树( 又称AVL 树)?
性质: 所有结点左、右子树深度之差的绝对值 ≤ 1 若定义结点的“平衡因子” BF = 左子树深度 – 右子树深度 则:平衡二叉树中所有结点的BF ∈[ -1, 0, 1 ]
思路: 首先,将12个球分三组,每组4个,任意取两组称。会有两种情 况:平衡,或不平衡。 其次,一定要利用已经称过的那些结论;即充分利用“旧球”的 标准性作为参考。
5
第1次:等分3组
①—④
相等= 小于<
第2次:3旧3新
①—③
⑨—(11) ⑤ ①—③
相等=
大于>
小于<
第3次:1旧1新
⑤—⑧
大于>
④ ⑨—(11)
树 10
1. 构造Huffman树的基本思想:
WPL最小的
权值大的结点用短路径,权值小的结点用长路径。

讨论:Huffman树有什么用? 最小冗余编码、信息高效传输
例:设有4个字符d,i,a,n,出现的频度分别为7,5,2,4, 怎样编码才能使它们组成的报文在网络中传得最快?
法1:等长编码(如二进制编码)
的二叉树,且让新二叉树根结点的权值等于其左右子树的根结 点权值之和。
(3) 在F 中删去这两棵树,同时将新得到的二叉树加入 F中。
(4) 重复(2) 和(3) , 直到 F 只含一棵树为止。这棵树便是Huffman 树。
怎样证明它就是WPL最小的最优二叉树?参考《信源编码》
Huffman树的特点:没有度为1的结点。
11
2. 构造Huffman树的步骤(即Huffman算法):
(1) 由给定的 n 个权值{ w1, w2, …, wn }构成n棵二叉树的集合F =
{ T1, T2, …, Tn } (即森林) ,其中每棵二叉树 Ti 中只有一个
带权为 wi 的根结点,其左右子树均空。 (2) 在F 中选取两棵根结点权值最小的树 做为左右子树构造一棵新
第6章 树和二叉树 (Tree & Binary Tree) 6.1 树的基本概念 6.2 二叉树 6.3 遍历二叉树和线索二叉树 6.4 树和森林 6.5 Huffman树及其应用
1
先介绍二叉树的典型应用
平衡树—— 特点:所有结点左右子树深度差≤1 排序树—— 特点:所有结点“左小右大” 字典树——由字符串构成的二叉排序树 判定树——特点:分支查找树(例如12个球如何只称3次
Huffman常译为赫夫曼、霍夫曼、哈夫曼等
9
树的带权路径长度 如何计算?
经典之例:
n
WPL =k=1 wklk
树中所有叶子结 点的带权路径长 度之和
75 2 4 a bc d
(a)
WPL= 36
2 c 4 d 75 ab (b)
WPL= 46
7 a
5 b
24 cd
(c)
WPL= 35
Huffman树是WPL 最小的
12
具体操作步骤:
step1:对权值进行合并、删除与替换
——在权值集合{7,5,2,4}中,总是合并当前值最小的两个权
a. 初始
c. 合并{5} {6}
d. 合并{7} {11}
b. 合并{2} {4}
圆框表示内结点 (合并后的权值)
方框表示外结点(叶子,字符)
13
step2:按左“0”右“1” 对Huffman树的所有分支 编号 ——将 Huffman树 与 Huffman编码 挂钩
例:判断下列二叉树是否AVL树?
-1
2
1 -1
-1
0
0
0
1
0
1
0 0
(a) 平衡树
(b) 不平衡树
3
什么是二叉排序树?
----或是一棵空树;或者是具有如下性质的非空二叉树:
(1)左子树的所有结点均小于根的值; (2)右子树的所有结点均大于根的值; (3)它的左右子树也分别为二叉排序树。
例:下列2种图形中,哪个不是二叉排序树 ?
01 d
01
i 01
a
n
Huffman编码结果:d=0, i=10, a=110, n=111 WPL=1bit×7+2bit×5+3bit(2+4)=35(小于等长码的 WPL=36)
特征:每一码不会是另一码的前缀,译码时可惟一复原
Huffman编码也称为前缀

14
二、Huffman编码
霍夫曼编码的基本思想是——
பைடு நூலகம்
令d=00,i=01,a=10,n=11,则: 频度高的信息 WPL1=2bit×(7+5+2+4)=36 用短码,反之
用长码,传输
法2:不等长编码(如Huffman编码)
效率肯定高!
令d=0;i=10,a=110,n=111,则:
WPL2=1bit×7+2bit×5+3bit×(2+4)=35
明确:要实现Huffman编码,就要先构造Huffman 树
75
2
4
a
bc d
7
6.5 Huffman树及其应用 一、Huffman树 二、Huffman编码
Huffman树 Huffman编码
最优二叉树 不等长编码
带权路径 长度最短 的树
是通信 中最经 典的压 缩编码
8
一、 Huffman树(最优二叉树)
a
b
c
若干术语:
d ef g
路 径:由一结点到另一结点间的分支所构成。
路径长度:路径上的分支数目。 例如:a→e的路径长度=2
树的路径长度:从树根到每一结点的路径长度之和。树长度=10
带权路径长度: 结点到根的路径长度与结点上权的乘积(WPL)
Weighted Path 树的带权路径长度:即树中所有L叶en子g结th点的带权路径长度之和
Huffman树: 带权路径长度最小的树。
相关文档
最新文档