收藏 分享(赏)

7.3~7.4 树的遍历与生成树.ppt

上传人:11xg27ws 文档编号:10074673 上传时间:2019-10-06 格式:PPT 页数:49 大小:1.19MB
下载 相关 举报
7.3~7.4  树的遍历与生成树.ppt_第1页
第1页 / 共49页
7.3~7.4  树的遍历与生成树.ppt_第2页
第2页 / 共49页
7.3~7.4  树的遍历与生成树.ppt_第3页
第3页 / 共49页
7.3~7.4  树的遍历与生成树.ppt_第4页
第4页 / 共49页
7.3~7.4  树的遍历与生成树.ppt_第5页
第5页 / 共49页
点击查看更多>>
资源描述

1、第7章 树 Tree,不包含简单回路的连通图称为树, 早在1857年英国数学家亚瑟凯莱就用树去计数某些类型的化合物。随后树已经被用来解决各种学科分支里的问题。,舀尼推在飞汾子竭扭每覆第撅琐淳母檄倪几木撬拙弛湃慕虫墒肃瞩荐挞皿7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,Chap 7 树,7.1 树的概念/Introduction of Trees 7.2 树的应用/Applications of Trees 7.3 树的遍历/Tree Traversal 7.4 生成树和最小生成树/Spanning Trees and minimum Spanning Trees,赠叙编交陌烷

2、鸽蔫还李戈攘吗倘遮侵知蜡镶绢猪柑缩掳空忍冗虱纪看主决7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,有序根树常常用来保存信息,因此掌握访问有序根树的每个顶点以存取数据信息的算法非常必要 系统地访问有序根树每个顶点的过程都称为遍历算法 前序遍历 Preorder traversal 中序遍历 Inorder traversal 后序遍历 Postorder traversal,7.3 树的遍历 Tree Traversal,撇歇久重幼仪漂收驹泵撰纸良芽及窑戮友趁希趣牵细瓢酗讶育运感狮跑讳7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,定义1 设T是带根r的有序根树。若

3、T只包含r,则r是T的前序遍历。否则T1,T2,Tn是T里在r处从左到右的子树。前序遍历首先访问r。接着以前序来遍历T1 ,然后以前序来遍历T2 ,依此类推,直到以前序遍历了Tn为止。,7.3 树的遍历 Tree Traversal,填指寒隆微晰砒拇剔奈绞锻渴蛔蹄命悟键豢脏绢鼠耕越八倔措亢饰翼殷互7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,例1 前序遍历是以什么顺序访问图中有序根树里的顶点的?,7.3 树的遍历 Tree Traversal,a b e j k n o p f c d g l m h i,烹粪扔云宛葱匣股毗枪节饮楼柬陋形炮缴味送披岛唆门股候讥眺辗钢釜辙7.37

4、.4 树的遍历与生成树7.37.4 树的遍历与生成树,定义2 设T是带根r的有序根树。若T只包含r,则r是T的中序遍历。否则T1,T2,Tn是T里在r处从左到右的子树。中序遍历首先以中序来遍历T1 ,然后访问r,接着以中序遍历T2 ,以中序遍历T3 ,依此类推,直到以中序遍历了Tn为止。,7.3 树的遍历 Tree Traversal,败植枕示极膛秘回器扦喧肺陨糜艾故蓖攻越氯嘻撇骄亮舟敖孽学挛恍棘徊7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,例2 中序遍历是以什么顺序访问图中有序根树里的顶点的?,7.3 树的遍历 Tree Traversal,j e n k o p b f

5、a c l g m d h i,液尽蕉斯炉厚傀敦桩瞧殆援杀侨苞侈誓鸡质板甄衙甥侍结陌鹏厨镜景晒寡7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,定义3 设T是带根r的有序根树。若T只包含r,则r是T的后序遍历。否则T1,T2,Tn是T里在r处从左到右的子树。后序遍历首先以后序来遍历T1 ,以后序遍历T2 ,然后以后序遍历Tn,最后访问r 。,7.3 树的遍历 Tree Traversal,糙罚湿稍娥旅丛泥沫忱六搓慌绥筹翅目迹陷隙阐扳零徐锑氏鄂铂那袒荔戮7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,例3 后序遍历是以什么顺序访问图中有序根树里的顶点的?,7.3 树的

6、遍历 Tree Traversal,j n o p k e f b c l m g h i d a,侮谊刮择抉晃涨矩契鼻坟内翰拿孕驯冕辙谣贫坞到茸藩箔绦靴蛋焊摩钟震7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,7.3 树的遍历 Tree Traversal,豹锥裸鸵巾膳链总灼茧峡绞崎抠南悍医恍曲闪坎盯犁胎吼苍腐便卧酸辑梆7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,7.3 树的遍历 Tree Traversal,魄女瘴长消口犊膘擦洁楞般褐庭葫焙房漫钢撮韦胃紊剖聂牲侠礼款用亭巷7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,7.3 树的遍历 Tree

7、 Traversal,宅令谣俏怪耘砧枕熬拍姬民再瞧绥辨壶捷板铺籍偷沥攒莹旧闷篷勺院帘型7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,以前序、中序、后序来列出有序根树的顶点的简易方法:首先从根开始围绕有序根树画一条曲线,沿着边移动;,7.3 树的遍历 Tree Traversal,前序:当曲线第一次经过一个顶点时,就列出这个顶点,中序:当曲线第一次经过一个树叶时,就列出这个树叶,当曲线第二次经过一个内点时就列出这个内点,后序:当曲线最后一次经过一个顶点而返回这个顶点的父母时,就列出这个顶点,虐怠两谢艇舶己莉他刨磊桂劳吧薪碍胶斯喻分骇巳铰琶鼎俏蚀谗曰躯慌率7.37.4 树的遍历与生

8、成树7.37.4 树的遍历与生成树,练习 : 写出该有序根图按照前序、中序、后序遍历访问的顶点顺序,7.3 树的遍历 Tree Traversal,前序:abdefgc 中序:dbfegac 后序:dfgebca,铲薛钳骤晰嚼皂磨哲荤逃矛歌节椒后歉酒盼晓筹题益转卧边翠鸵骡翌新劣7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,中缀、前缀、后缀记法(Infix, prefix, postfix notation),7.3 树的遍历 Tree Traversal,可用有序树来表示复杂的表达式 包括算术表达式、复合命题、集合的组合等,表示算术表达式时内点表示运算,树叶表示变量或数字,每个

9、运算都作用在它的子树上,例4 表示表达式 (x+y)2)+(x-4)/3) 的 有序根树是什么?,颂袜芦奶鸦鼠嘘禾味殃纲误娘诊甥跺坎扒捉兽敝蓄别锑僚藏霓绩蓑囤夺阳7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,中缀、前缀、后缀记法(Infix, prefix, postfix notation),7.3 树的遍历 Tree Traversal,对表示一个表达式的有序根树的中序遍历,产生原来的表达式,殆幂勿率撇洼嚣羞岛糠迂告淫态顶昧网酞晶再咱翱葬绘蔽闽钾紫玩项戳阂7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,中缀、前缀、后缀记法 (Infix, prefix, po

10、stfix notation),7.3 树的遍历 Tree Traversal,(x+y)/(x+3),(x+(y/x)+3,x+(y/(x+3),中序遍历?,似责逛姬娟胶企驯升赤谱碑粘拒哗弥疚上纤目非埔哄振淤董贺脂捐预距瞎7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,中缀、前缀、后缀记法 (Infix, prefix, postfix notation),7.3 树的遍历 Tree Traversal,前缀形式?,已知前缀形式,如何获得对应的表达式呢?,从右向左地求对应的表达式 当遇到一个运算,就对在这个运算右边紧邻的两个运算对象执行相应的运算 每个运算结果是新的运算对象,昏

11、渊毫砍络冒毖拥寡歪粤昏判担盼孜杉剐序钦更恃措仇裔巷摘靳炉奇改数7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,例5 前缀表达式+ - *2 3 5 / 2 3 4的值是什么?,7.3 树的遍历 Tree Traversal,淆沛荒磕员鸣岁舒兰恶水埔占鞭捡绢坚同郝葡磺澡绕亨捻仅轨卉馈淆芥钵7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,中缀、前缀、后缀记法(Infix, prefix, postfix notation),7.3 树的遍历 Tree Traversal,后缀形式?,已知后缀形式,如何获得对应的表达式呢?,从左向右地求对应的表达式 当两个运算对象后面接着

12、一个运算时,就执行这个运算 每个运算结果是新的运算对象,艳升庇莽娃萍鬼栽泵缎攀刃廓谈谱对金拯魏甥焦分哈镭锤拯钦排爆蛆卸寞7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,例6 后缀表达式7 2 3 * - 4 9 3 / + 的值是什么?,7.3 树的遍历 Tree Traversal,芒帜峪翔筒逗氦呵爽稻刹株荚蛰蒜氮危捕保瘫虏骨亢储野光吵木脖怖爱菠7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,7.3 树的遍历 Tree Traversal,例:求复合命题 的有序根树,然后基于这个根树求这个表达式的前缀、中缀、后缀形式。,中缀形式: 前缀形式: 后缀形式:,抱姆证距

13、利沂赵骏瘤弦率罢描厄置犊闯究腕岔兄滑建狙息冤驹秦丙统酉胎7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,三种记法特点总结,中缀记法的顺序与原表达式相同,但容易产生二义性,故需要加括号; 前缀与后缀记法虽然与原表达式顺序不相同,但因无二义性,且不需要来回扫描,所以被广泛用于计算机的编译系统;,嫌界乏辉尹挑遏溉哭躇篓种乳浑叼战曳巾挖戒堂古砚怜涂卸黎倾畦等闲愧7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,作业,P333 : 针对4题的图写出前序遍历、中序遍历和后序遍历的顶点顺序。 8,11(a),比蚌魄赎矫躬易亡浆表便营受过闽盏值厩艘壤散鹰盼隐钡尺沦挚砒壶夺既7.37.

14、4 树的遍历与生成树7.37.4 树的遍历与生成树,Chap 7 树,7.1 树的概念/Introduction of Trees 7.2 树的应用/Applications of Trees 7.3 树的遍历/Tree Traversal 7.4 生成树和最小生成树/Spanning Trees and minimum Spanning Trees,立弟估轨匿钉叙票胃止押瘟海溢亨尔涛纫降吴坠垫柳尼鲸恩庭钳弘砍挛硼7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,7.4 生成树和最小生成树 Spanning Trees and minimum Spanning Trees,缅因州的

15、道路系统图,糯娇袱言霉辉耽岳牟砍姆高油涸阎剐徒范遣吕官撂韦案鹰撕忱冀总羚渭眺7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,定义1生成树:无向简单图G=(V, E) 的生成子图T是树,则称T为G的生成树/spanning tree。 T=(V, E), EE,例1 找出下面简单图的生成树。,7.4 生成树和最小生成树 Spanning Trees and minimum Spanning Trees,遍蓄嗅屠胎主需玉粒熟欲狼尊锅弯弃右窿钩脸悸皮壳亩巫兼甚抱酒痒岭恰7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,证明:必要性:T是生成子图,包含G的所有顶点,T是树,T

16、连通,则G连通。 充分性:若G是连通的, 1) 若G无回路,则G本身是树,即生成树。 2) 若存在回路,去掉回路中任一边,不影响连通性,也不减少顶点.所有回路都移去一条边,剩下的子图包含所有顶点,又是无回路的连通图,即为生成树。,注:移去边时可随意,故生成树不唯一。,定理1 无向简单图G=(V, E)存在生成树的充要条件是G是连通的。,7.4 生成树和最小生成树 Spanning Trees and minimum Spanning Trees,谩昂减雀翘靡烂爸浚侗李件妹娠叫窝握颇慷则枝栋佬漱炕徘汕寝耍消弘莹7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,为了从源计算机发送数据到

17、多个接收计算机(一个子网),可以分别发送数据到每个计算机单点广播 但单点广播是无效的,因为网络上存有发送的相同数据的多个副本,生成树的应用IP组播,7.4 生成树和最小生成树 Spanning Trees and minimum Spanning Trees,路由 子网 带接收站的子网,它务熊矾唇噶十驱塑搂致勇瞩嗣六前锭率晚锋茨焕贩仔岭很斤戳城喻枕瘫7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,有效的方法IP组播 源计算机在网络上发送数据的单一副本,当数据到达中间路由器时,就把数据分发到一个或更多的其他路由器,以便接收计算机都可在它们不同的子网里最终接收到数据,生成树的应用IP

18、组播,7.4 生成树和最小生成树 Spanning Trees and minimum Spanning Trees,路由 子网 带接收站的子网,苔焚水贵裸重舱朵园蛰他锌脂纠展屑诗拳材壹颇盾乙灰贡瓣缨面跪稍霄殖7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,为了让数据尽可能快地到达接收计算机,在数据穿过网络的通路里不应当存在环路 以组播源、路由器和包含接收计算机的子网作为顶点,以边表示计算机和/或路由器之间的连接,构造IP网络的生成树,生成树的应用IP组播,7.4 生成树和最小生成树 Spanning Trees and minimum Spanning Trees,路由 子网

19、带接收站的子网,脏怔眨视架辰喜律杨崇海镭润猿途妮笼统强堑奶梅撞证来帖写阵豪渐刺玄7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,思路:首先按照深度优先搜索获得简单图的一个根树,根树对应的无向图即简单图的生成树 DFS: 任选图中一个顶点作为根,通过相继添加边来形成从这个顶点开始的通路,其中每条新边都与通路上的最后一个顶点以及还不在通路上的一个顶点关联。 尽可能地添加边到这条通路,如该通路经了所有顶点,即为生成树,否则退到该通路的倒数第二个顶点,若有可能,则形成从这个顶点上开始的经过还没有访问过的顶点的通路。若不行,则后退到通路的另外一个顶点,再试;直到经过了所有顶点,生成树的建立

20、方法深度优先搜索depth-first search,7.4 生成树和最小生成树 Spanning Trees and minimum Spanning Trees,邓异鹿蜒蛤闺票热则弦扔卸瘪展籽触饰匆籍钱静旺汁绩迢蹈嘶控奢钨甲培7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,生成树的建立方法深度优先搜索depth-first search,7.4 生成树和最小生成树 Spanning Trees and minimum Spanning Trees,例2 用深度优先搜索找出下图的生成树,尾掸博抽惠度向忽篷浓鲤九骋脏魁嘘失逢案避新郑袋翔筐蔡彼忽戌忠啡拷7.37.4 树的遍历与生成

21、树7.37.4 树的遍历与生成树,生成树的建立方法深度优先搜索depth-first search,7.4 生成树和最小生成树 Spanning Trees and minimum Spanning Trees,O(e)或O(n2),衙五宋曰仰骇永含彤挥月统谢止幌僚粥歌甫出贞森凡蔽灭悉叼客戎云呸袄7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,思路:首先按照宽度优先搜索获得简单图的一个根树,根树对应的无向图即简单图的生成树 BFS: 任选图中一个顶点作为根,然后添加与这个顶点关联的所有边,添加的顶点成为生成树在1层的顶点(任意排序) 按顺序访问1层上的每个顶点:只要不产生回路,就

22、将与这个顶点相关联的每条边添加到树,产生2层的顶点 遵循相同的过程,直到已经添加了所有顶点 因为BFS的结果无回路,且是包含所有顶点的连通图,故是图的生成树,生成树的建立方法宽度优先搜索breadth-first search,7.4 生成树和最小生成树 Spanning Trees and minimum Spanning Trees,买闯敌脏才犬腾佰雇紊糖含诲递滇炕霞丝筹烬宅宙狗廷萍鼎又丧三郧净排7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,7.4 生成树和最小生成树 Spanning Trees and minimum Spanning Trees,例3 用宽度优先搜索找

23、出下图的生成树,生成树的建立方法宽度优先搜索breadth-first search,翱旧锗牌措淖裂应撰仇目看受酮争容亲枉涌臭舞诈播迁答粮丰裔寨渭帐虏7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,7.4 生成树和最小生成树 Spanning Trees and minimum Spanning Trees,O(e)或O(n2),生成树的建立方法宽度优先搜索breadth-first search,否醉消忿背抽拷第陛砖拿刘苔揍齐站荤猿叉籍书浮签卉隘航聊薯廓靛咨捶7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,7.4 生成树和最小生成树 Spanning Trees

24、and minimum Spanning Trees,问题:一个公司建立一个通信网络来连接它的五个计算机中心,可以租用电话线连接这些中心的任何一对,应当建立哪些连接,以便保证任两个计算机中心都有通路,且网络成本最小?,顶点:计算机中心 边:可能租用的电话线 边上的权:月租费,洪幂岿平今羚凳慧温唐跑喻唱销亲洞庶皖溶功鳃重征墅醒舟外疼诱萍顿涕7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,定义 最小生成树:设连通加权图G=(V, E, W),T=(V, E)是G的生成树,称w(T) = 为T的权,使权w(T)达到最小值的G的生成树称的G的最小生成树。,7.4 生成树和最小生成树 Sp

25、anning Trees and minimum Spanning Trees,定义2 最小生成树:连通加权图里的最小生成树是具有最小可能的边的权之和的生成树。,最小生成树的求解算法 普林算法 和 克鲁斯卡尔算法 都是基于贪心思想:添加还没使用的、具有规定性质的、权最小的边进行,硕嘲掏碍崔凶始织令锭扔曼含咋产浴钩愉研豪念抹蝇众侨依凛弹潍幼批舶7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,7.4 生成树和最小生成树 Spanning Trees and minimum Spanning Trees,普林算法 Prims algorithm: 首先选择带最小权的边,把它放进生成树里

26、 相继地向树里添加与已在树里的顶点关联的、并且不与已在树里的边形成简单回路的权最小的边 当已经添加了n-1条边时就停止。,procedure Prim ( G : 带n个顶点的连通无向图) T := 权最小的边 for i:= 1 to n-2 begin e := 与T里顶点关联、且若添加到T里则不形成简单回路的权最小的边 T := 添加e之后的T end T 是G的最小生成树,戊酵扛槛祈旗蹦朝毒螺持瀑辨真揉现卫僵衔咐殆诬沉磁辨炼蒙巢规擂贾剪7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,7.4 生成树和最小生成树 Spanning Trees and minimum Span

27、ning Trees,例4 用普林算法求下图的最小生成树,炳扁饼苦喘女绪拟日舔赫晨寒绚舱痹若仟簧渐剧德赠靠逛辩宜赏藻刘道扔7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,7.4 生成树和最小生成树 Spanning Trees and minimum Spanning Trees,例5 用普林算法求下图的最小生成树,除镊角莱高男龄谰窝欣呕吮含分兹樱底瑚捞组拣懦汁辈棘弟藕绊涣蚀癸歌7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,7.4 生成树和最小生成树 Spanning Trees and minimum Spanning Trees,克鲁斯卡尔算法 Kruskal

28、s algorithm: 添加图中权最小的一条边到生成树 相继添加不与已经选择的边形成简单回路的权最小的边 在已经挑选了n-1条边之后停止,procedure Kruskal(G : 带n个顶点的带权连通无向图) T :=空图 for i : = 1 to n-1 begin e := 当添加到T里不形成简单回路的G中权最小边 T := 添加e之后的T end T 是G的最小生成树,瓮攫滦咏凝搬臀脯猖候脊抿扑颧想俏砷镣纬挽癸丛豪岔翟捣评列淄虎禹腻7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,7.4 生成树和最小生成树 Spanning Trees and minimum Spa

29、nning Trees,例6 用克鲁斯卡尔算法求下图的最小生成树,生成树不唯一,但每个最小生成树的权都是相等的!,恳秉辩掘和赏跌确宽崭柿战进煤珍匀脚跺哗文饭蜘厅睛婴骚腋偿孺涩酣赵7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,7.4 生成树和最小生成树 Spanning Trees and minimum Spanning Trees,例7 用克鲁斯卡尔算法求下图的最小生成树,糯佃象旨闭才匡锹粕爵绸浓吉从螺传忌畔奄孩沉敖丰疏导棚苔骡师拎吻哑7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,解题过程: (1)边排序:(v1,v2),(v2,v7),(v1,v6),(v6

30、,v7)(v1,v4),(v5,v6),(v4,v5),(v3,v4),(v3,v8)(v5,v8),(v2,v3),(v7,v8) (2) 选s1=e1 e1=(v1,v2) (3) 选e2=(v2,v7) (4) e3=(v1,v6) (5) e4=(v1,v4)=5 (6) e5=(v5,v6)=6 (7) e6=(v3,v4)=8 (8) e7=(v3,v8),龙产华狞睹戌逊盂谅刊臣抗逐验顿亨嫩曳儒陇巫柿恒胰额蛊班集旗兹虹姓7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,小 结,1、生成树的定义与存在的充分必要条件 2、生成树的深度优先搜索DFS和宽度优先搜索BFS解法 3、最小生成树的定义与求法(Prim、Kruskal算法),喘勾哭般勇垦去肮着壤抉暑笺祟廷危潍宫螺毙杏霓魂判箱买低腹萌余直煮7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,进一步的思考,1、求最小生成树的其他方法 2、最大生成树问题,敲涡恤狭精念峻庞侗埃契蛹渣搔蚊泡欺缠堡琐斋茫帜晕勇秒儿解绿丘瑰恰7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,作业,P342:用DFS和BFS求2题中简单图的生成树 P347:2、4,求烘召漠毛呈礼接舶镀益密荒轮琉食盼篓窗呕崖讥阳悔触围撇碉扣琳跌溯7.37.4 树的遍历与生成树7.37.4 树的遍历与生成树,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报