第6章树和二叉树概要1.ppt

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

特殊的二叉树 二叉树的插入、删除算法 二叉树的前序 · 中序 · 后序遍历及算法 应用二叉树遍历的递归算法 树与二叉树的遍历对应关系 树、森林与二叉树的相互转换 森林的前序、中序遍历 哈夫曼树 哈夫曼树的构造方法 哈夫曼编码 带权路径长度的计算 哈夫曼树中叶子结点与总结点个数关系 二叉排序树 二叉排序树的生成 二叉排序树的构建 作业题 1. 对于一组给定的权值W={14,35,3,8,20,10},建立相应的哈夫曼树并计算其带权路径长度WPL。 2. 写出求二叉树中度为1的结点个数的算法。 3. 对于给定序列{20,35,100,10,15,30,40,19,20},请手动构造一棵二叉排序树。 二叉树遍历的应用 统计叶子结点的个数 在bt为二叉树的根结点指针的二叉树中统计叶子结点的个数。 int count=0; Countleaf(BiTreeNode *bt) { if (bt==NULL) return; if(bt-lchild==NULLbt-rchild==NULL) count++; if(bt-lchild!=NULL) Countleaf(bt-lchild); if(bt-rchild!=NULL) Countleaf(bt-rchild); } 统计叶子结点的个数 练习 统计度为2的结点的个数 在bt为二叉树的根结点指针的二叉树中统计度为2的个数 6.6 树、森林与二叉树的转换 一、树转换为二叉树 A B G D C E F A B G D C E F A B G D C E F 连线、抹线 旋转 1.在所有兄弟结点之间加一连线; 2.对每个结点,除了保留与最左边孩子的连线外,去掉该结点与其它 孩子的连线。 3.整理连线,使每个结点的第一个孩子为左孩子,其右兄弟为右孩子. 请作练习: A B H C E D F G A B H C E D F G A B H D E C F G A B H C E F G D 树转换为二叉树 G H A B F C E D L I K J 二、森林转换为二叉树 L I K J G H A B F C E D ①?将森林中的每棵树变为二叉树 ②?因为转换所得的二叉树的根结点的右子树均为空,故可将各二叉树的根结点视为兄弟从左至右连在一起,就形成了一棵二叉树。 G H A B F C E D K I J 请做练习: H I K J G A B F C E D 三、二叉树转换为森林的规则 ? 如果B为空,则 对应的森林F也为空。 ? 如果B非空,则 F中第一棵树T1的根为root; T1的根的子树森林{ T11, T12, …, T1m }是由 root 的左子树 LB 转换而来,F 中除了 T1 之外 其余的树组成的森林{ T2, T3, …, Tn } 是由 root 的右子树 RB 转换而成的森林。 具体方法:若结点 x 是其双亲 y 的左孩子,则把 x 的右孩 子,右孩子的右孩子,…,都与 y 用连线连起来,最后去掉所有双亲到右孩子的连线。 请作练习: A B H C E D F G A B H C E D F G 6.7 树和森林的遍历 树的遍历 先根遍历: 先访问根节点,然后从左到右访问节点的子树。 A B G D C E F A B D E F G C A E B C F D G B E F 树的遍历 后根遍历:先左到右访问节点的子树,然后访问根节点。 A B D E F G C E B F G C D A A B G D C E F B E F 按层次顺序(1,2,…)遍历, 同一层按从左到右。 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 A,B,E,F,C,G,D,H,I,J A B H D E C F G 练习: 请给出该树的先根、后根和层序遍历结果 先根: A B E C F D G H 后根: E B F C G H D A 层序: A B C D E F G H 先序遍历 若森林非空,则可按下述规则遍历 (1)访问森林中第一棵树的根结点; (2)先序遍历第一棵树中根结点的子树森林;(3)先序遍历除去第一棵树之后剩余的树构成的森林。 森林的遍历 森林的遍历 前序遍历 A B G D C E

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档