[计算机软件及应用]115 树和二叉树.ppt

  1. 1、本文档共119页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[计算机软件及应用]115 树和二叉树

基本概念 树 树、子树、度、结点、树高、有序/无序树、森林 顺序结构 二叉树的性质(5个)、满二叉树、完全二叉树 二叉树 存储结构 先序、中序、后序 定义及二叉树与树的区别 二叉链表 遍  历 二叉树构造 表示方法 图形、文氏图、广义表、目录表示法 基本运算 初始化、插入、查询 二叉树遍历方法的应用 第7章 树和二叉树 小结2-1 哈夫曼树的定义 哈夫曼树 孩子链表表示法 存储结构 孩子兄弟链表表示法 哈夫曼树的构造 应用实例:节省存储空间的字符编码 树(森林)的遍历 树和森林 双亲表示法 先序 后序 树(森林)与二叉树的相互转换 T to BT BT to T 线索二叉树 定义及结构 求解过程 孩子表示法 第7章 树和二叉树 小结2-2 * * * * * * * * * * * * * * * * * * * * * * * * * 每个结点有两个指针域: First指针: 指向该结点的第一个儿子结点; Next 指针:指向该结点的右兄弟结点; 第一个孩子 右兄弟 next data first 结点描述与二叉链表相似 树的存储结构 —— 孩子兄弟表示法(二叉链表表示法) 第7章 树和二叉树 Typedef struct Treenode{ elementtype data; struct Treenode *firstchild, *nextsibling; }; A B C D E F G ^ A B ^ C ^ D ^ E ^ F ^ ^ G ^ 树的孩子兄弟表示法图示 第7章 树和二叉树 将树根转化为二叉树的根; 对每个结点都做如下处理: 结点第一个孩子转化为其二叉树中的左儿子; 结点的右兄弟转化为其右儿子。 转化过程: 树与二叉树的转换(树→二叉树) 第7章 树和二叉树 A B D C F E A B D C F E A B D C F E A B D C F E 将树转换为二叉树示意图: 1.加线 2.抹线 3.旋转 第7章 树和二叉树 2 5 6 4 7 8 1 3 1 2 4 3 6 5 7 8 练习:将下图所示树转化为二叉树 第7章 树和二叉树 将二叉树根转化为树的根; 对每个结点都做如下处理: 结点的左儿子转化为其树中第一个孩子; 结点的右儿子转化为其右兄弟。 转化过程: 树与二叉树的转换(二叉树→树) 第7章 树和二叉树 A B D C F E A B D C F E A B D C F E 将二叉树还原为树示意图 第7章 树和二叉树 1 2 3 4 5 6 2 4 6 3 1 5 练习:将下图所示二叉树转化为树 第7章 树和二叉树 将各棵树分别转换为二叉树; 把第一棵树的根结点作为二叉树根结点; 把其余树的根结点作为前一棵树的右孩子。 森林与二叉树的转换(森林→二叉树) 第7章 树和二叉树 A D C B E F G A D C B E F G A D C B E F G A D C B E F G 第7章 树和二叉树 抹线:将根结点的右孩子并沿右分支搜索到的所有右孩子与其根的连线抹去(形成各棵孤立的二叉树) 还原:将各棵二叉树还原为一般树。 森林与二叉树的转换(二叉树→森林) 第7章 树和二叉树 A D C B E F G A D C B E F G A D C B E F G A D C B E F G 第7章 树和二叉树 按先根次序遍历 若树不空,则先访问根结点,然后依次先根遍历各棵子树。 按后根次序遍历 若树不空,则先依次后根遍历各棵子树,然后访问根结点。 按层次遍历 若树不空,则自上而下自左至右访问树中每个结点。 树的遍历 第7章 树和二叉树 按先根次序遍历: 按后根次序遍历: 按层次遍历: A B C D E F H ABEFCDH EFBCHDA ABCDEFH 树的遍历示例 第7章 树和二叉树 练习:将树转化为二叉树,遍历二叉树,得出什么结论? 先根与先序等同序列、后根与中序等同序列 两种遍历方法: (1)先序遍历森林:对森林中的每一棵树进行先根遍历。 (2)后序遍历森林:对森林中的每一棵树进行后根遍历。 注: 由于在树和森林中,一个结点可以有两棵以上的子树,因此不便于讨论它们的中根遍历。 森林的遍历 第7章 树和二叉树 Void preorder(Tnode *t) { if(t!=NULL) { printf(“%c”, t–data) preorder(t–firstson); preorder(t–nextbrother); } } 先序遍历森林的递归算法 第7章 树和二叉树 Void postor

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档