- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8图论-树应用10-26
;作业问题:
欧拉图的判定已经很完善,主要是关于哈密顿图的判定;§16.3 根树及其应用
设D是有向图,若D的基图是无向树,则称D为有向树
在所有的有向树中,根树最重要,所以在此只讨论根树
一、根树
1、 定义:设T是n(n≥2)阶有向树
若T中有一个顶点的入度为0,其余顶点的入度均为1,则称T为根树 ;2、根树中顶点的关系
定义:设T为一棵非平凡的根树,
?vi,vj∈ V(T),若vi可达vj,则称vi为vj的祖先,vj为vi的后代;
若vi邻接到vj(即vi,vj ∈E(T)则称vi为vj的父亲,而vj为vi的儿子
若vj,vk的父亲相同,则称vj与vk是兄弟
;3、有序树
设T为根树,若将T中层数相同的顶点都标定次序,则称T为有序树
根据根树T中每个分支点儿子数以及是否有序,可以将根树分成下列各类:
(1)若T的每个分支点至多有r个儿子,则称T为r叉树;
又若r叉树是有序的,则称它为r叉有序树.
(2)若T的每个分支点都恰好有r个儿子,则称T为r叉正则树;
又若T是有序的,则称它为r叉正则有序树.
(3)若T是r叉正则树,且每个树叶的层数均为树高,则称T为r叉完全正则树,
又若T是有序的,则称它为r叉完全正则有序树。
4、r叉树的子树
定义: 设T为一棵根树,?v∈ V(T)
称v及其后代的导出子图Tv为T的以v为根的根子树
如:2叉正则有序树的每个分支点的两个儿子导出的根子树分别称为左子树和右子树.;二、根树的应用
1、最优2叉树定义:设2叉树T有t片树叶v1,v2,…,vt,权分别为w1,w2,…,wt, 称 W(T)=∑wi |(vi)|为T的权,
其中|(vi)|是vi的层数(也可以是从根到该叶子的通路长度).
在所有有t片树叶,带权w1,w2,…,wt的2叉树中,
总权值权W(T)最小的2叉树称为最优2叉树
三棵带权2叉树
W(T1)=2(2+2)+3*3+5*3+3*2=38
W(T2)=4(3+5)+3*3+2*2+2=47
W(T3)=3*(3+3)+5*2+2(2+2)=36
;2、前缀编码
在通信中,常用二进制编码表示符号.
1)等长编码与不等长编码:
不等长编码可以使总电文总长度较短
2)不等长编码中编码的问题:如何识别?
3)前缀编码定义:设a1a2,…,an-1an为长为n的符号串,
称其子串a1, a1a2, …, a1a2…an-1分别为该符号串的
长度为1, 2, …, n-1的前缀.
设A={b1,b2,…bm }为一个符号串集合,
若对于任意的bi,bj∈A (i≠ j) bi与bj互不为前缀,则称A为前缀码.
若符号串bi(i=1,2,…,m)中只出现0,1两个符号,则称A为二元前缀码
{1,10,101,0101,1010,0100,01001 }不是前缀码
{1,00,011,0101,01001,01000 }为前缀码.
{ 1,01,111,1100,0111 } 不是前缀码
2)利用二叉树产生二元前缀码
规定二叉树的左子树的边为0,右子树的边为1
则将从根到叶子结点的通路中边的序列即为叶子的二元前缀编码
3)最优二元前缀码
给定所需编码的字符的频率,构造字符的二元前缀编码使其总电文长度为最短-称为最优二元前缀码
利用哈夫曼树构造最优二元前缀码;3、二叉树的周游(遍历)
二叉树的周游:对于一棵二叉树的每一个结点都访问一次且仅一次的操作
1)做一条绕行整个二叉树的行走路线(不能穿过树枝)
2)按行走路线经过结点的位置(左边、下边、右边)
得到周游的方法有三种:
中序遍历(路线经过结点下边时访问结点)
访问的次序:左子树-根-右子树
前序遍历(路线经过结点左边时访问结点)
访问的次序:根-左子树-右子树
后序遍历(路线经过结点下边时访问结点)
访问的次序:左子树-右子树-根
;4、表达式的(逆)波兰式生成
给定表达式:(a*(b+c)+d*e*f)/(g+(h-i)*j)
对应的二叉树:
后序遍历的结果: ((a(bc+)*)(d(ef*)*)+)(g((hi-)j*)+)/
逆波兰式 = abc+*def**+ghi-j*+/
计算机在运算该
文档评论(0)