e 第五章 树和二叉树.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
A B C D E F G H I J ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ H 头结点 ^ 二叉树的中序全线索链表 5.5 树和森林 一、树的存储结构 1、双亲表示法:定义结构数组存放树的结点,结点含两个域: 数据域:存放结点本身信息 双亲域:指示本结点的双亲结点在数组中位置 特点:找双亲容易,找孩子难 按层存放 data parent 2、孩子表示法(结合顺序、链式存储) 孩子链表:每个结点的孩子结点用单链表存储,再用含n个元素的结构数组指向每个孩子链表 A B C D E F G H I J A B C D E F G G I J 2 3 4 8 9 10 5 6 7 1 2 3 4 5 6 7 8 9 10 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 特点:找孩子容易,找双亲难。可以与双亲表示法结合,形成双亲-孩子链表示。 带双亲的孩子链表 6 1 2 3 4 5 7 8 9 a c d e f g h i b data fc 2 3 4 5 9 7 8 6 ^ ^ ^ ^ ^ ^ ^ ^ ^ 0 1 2 2 3 5 5 5 1 parent a b c d e f h g i 3、孩子兄弟表示法(二叉树表示法) 实现:用二叉链表作树的存储结构,链表中每个结点的两个指针域分别指向其第一个孩子结点和下一个兄弟结点 特点 操作容易,可利用二叉树的算法实现树的操作. 破坏了树的层次.并且应与二叉树做区别.借用二叉树形式,而内容不同. 容易找到某结点的孩子和兄弟,如:找某结点的第i的兄弟,只要沿着fch找到第一个孩子,再沿该孩子结点的nsib连续走i-1步,即可找到的i个孩子. typedef struct node { datatype data; struct node *fch, *nsib; }JD; fch data nsib a b c d e f h g i a b c d e f g h i ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ 二、森林与二叉树的转换 1、森林转化成二叉树的规则 步骤:(1)将森林中各棵树转化为对应二叉树; (2)取第1棵树的根作为森林二叉树的根;将第二 棵树的根链入第一棵树的兄弟链;依次类推,将 森林中各二叉树根结点看作兄弟,通过兄弟链链 接起来。 A B C D E F G H I J A B C D E F G H I J A B C D E F G H I J A B C D E F G H I J 2、 二叉树转换为森林的规则 步骤:若二叉树非空,则二叉树根及其左子树为第1棵树的二叉树表示,二叉树的右子树又看作是一个森林转换的二叉树,用同样的方法,直到最后产生一个没有右子树的二叉树为止。 A B C D E F G H I J A B C D E F G H I J A B C D E F G H I J A B C D E F G H I J 三、树的遍历 遍历——按一定规律走遍树的各个顶点,且使每一顶点仅被访问一次,即找一个完整而有规律的走法,以得到树中所有结点的一个线性排列 常用方法 先根(序)遍历:先访问树的根结点,然后依次先根遍历根的每棵子树 后根(序)遍历:先依次后根遍历每棵子树,然后访问根结点 前序遍历 若树非空,则 1、访问根结点 2、依次前序遍历树的各子树 A B C D E F G H I J 遍历序列: A,B,E,F,C,G,D,H,I,J 后序遍历 若树非空,则 1、依次后序遍历树的各子树 2、访问根结点 A B C D E F G H I J 遍历序列: E,F,B,G,C,H,I,J, D,A 注意: 前序遍历一棵树等价于前序遍历该树对应的二叉树 后序遍历一棵树等价于中序遍历该树对应的二叉树 A B C D E F G H I J A B C D E F G H I J A,B,E,F,C,G,D,H,I,J 5.6 哈夫曼树及其应用 一、概念 1、路径:从树中一个结点到另一个结点之间的分支构成这两个结点间的路径;路径上的分支数称为路径长度。 2、树的路径长度:从树根到每一个结点的路径长度之和; 树的带权路径长度:树中所有叶子结点的带权路径长度之和。 3、Huffman树——设有n个权值{w1,w2,……wn},构造一棵有n个叶子结点的二叉树,每个叶子的权值为wi,则wpl最小的二叉树叫哈夫曼树,即Huffman树是带权路径长度

文档评论(0)

___________ + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档