- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
14数据结构之三
数据结构之二 树型结构 四、二叉树的遍历 二叉树遍历的定义??? 按照一定的规律不重复地访问(或取出结点中的信息,或对结点作其它的处理)二叉树中的每一个结点。 2.二叉树遍历的顺序??? 如果用L、D、R分别表示遍历左子树、访问根结点、遍历右子树,则对二叉树的遍历可以有下列六种(3!=6)组合:LDR、 LRD、 DLR、 DRL、RDL、 RLD。若再限定先左后右的次序,则只剩下三种组合:LDR(中序遍历)、LRD(后序遍历)、DLR(前序遍历)。 以下遍历以该树为例 前序遍历 规则如下:??? 若二叉树为空,则退出。否则???? ⑴ 访问处理根结点; ???? ⑵ 前序遍历左子树;???? ⑶ 前序遍历右子树; 如上图的前序遍历结果为 a b d e h i c f g 中序遍历 规则如下:??? 若二叉树为空,则退出;否则??? ⑴ 中序遍历左子树;??? ⑵ 访问处理根结点;??? ⑶ 中序遍历右子树; 如上图的中序遍历结果为 d b h e i a f c g 后序遍历 规则如下:??? 若二叉树为空,则退出;否则??? ⑴ 后序遍历左子树;??? ⑵ 后序遍历右子树;??? ⑶ 访问处理根结点; 如上图的后序遍历结果为 d h i e b f g c a 普通树的遍历 先根次序遍历树 ??? 规则:若树为空,则退出;否则先根访问树的根结点,然后先根遍历根的每棵子树。 后根次序遍历树??? 规则:若树为空,则退出;否则先依次后根遍历每棵子树,然后访问根结点。 后根遍历次序为 w h d e x a f b s m o n i j t u c r 先根遍历次序为 r a w x d h e b f c s t i m o n j u 五、根据两种遍历顺序确定树结构 由两种顺序确定树结构 遍历二叉树有三种规则:??? 前序遍历:根—左子树—右子树;??? 中序遍历:左子树—根—右子树; ??? 后序遍历:左子树—右子树—根; ??? 由于前序遍历的第一个字符和后序遍历的最后一个字符为根,中序遍历中位于根左方的子串和位于根右方的子串分别反映了左子树和右子树的结构,因此二叉树的形态可以由其中序与后序或者前序与中序唯一确定。但无法反映左子树和右子树结构的前序遍历与后序遍历却不能做到这一点,因此这两个遍历顺序可对应多种二叉树的形态。 试题 1.二叉树T,已知其先根遍历是1 2 4 3 5 7 6(数字为结点的编号,以下同),后根遍历是4 2 7 5 6 3 1,则该二叉树的可能的中根遍历是( )。A. 4 2 1 7 5 3 6 B. 2 4 1 7 5 3 6 C. 4 2 1 7 5 6 3 D. 2 4 1 5 7 3 6 2. 已知一棵二叉树的结点名为大写英文字母,其中序与后序遍历的顺序分别为:CBGEAFHDIJ与CGEBHFJIDA,则该二叉树的先序遍历的顺序为什么? 六、二叉排序树 所谓二叉排序树是指具有下列性质的非空二叉树??? ⑴ 若根结点的左子树不空,则左子树的所有结点值均小于根结点值;??? ⑵ 若根结点的右子树不空,则右子树的所有结点值均不小于根结点值;??? ⑶ 根结的左右树也分别为二叉排序树;??? 显然,对二叉排序树进行中序遍历,可得出结点值递增的排序序列。 例: 6 3 8 1 9 2 4 5 7 6 3 1 4 2 5 8 7 9 七、最优二叉树(哈夫曼树) 概念??? 在具有n个带权叶结点的二叉树中,使所有叶结点的带权路径长度之和(即二叉树的带权路径长度)为最小的二叉树,称为最优二叉树(又称最优搜索树或哈夫曼树),即最优二叉树使 (Wk—第k个叶结点的权值;Pk—第k个叶结点的带权路径长度)达到最小。 哈夫曼树的应用 哈夫曼编码发明 Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长 度最短的码字,有时称之为最佳编码,一般就叫作Huffman编码。 编码过程例:编码字符组成????????? a???? b???? c???? d????? e????? f频度(单位:次)??????? 45??? 13?? 12?? 16???? 9???? 5 e f e f c e f c b e f c b d e f c b d a e f c b d a 0 1 1 1 1 1 0 0 0 0 字符 编码 a 0 b 110 c 1110 d 10 e 11110 f 11111 每个编码都不是另一个的前缀。 试题 最优前缀编码,也称Huffman编码。这种编
文档评论(0)