数据结构课件6树和二叉树3章节幻灯片.ppt

数据结构课件6树和二叉树3章节幻灯片.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
A B C D E F G H I J K 例如:对左图所示的树,其输出结果应为: A B E A B F A C A D G H I A D G H J A D G H K 2、输出树中所有从根到叶子的路径的算法: void AllPath( BiTree T, Stack *S ) { if (T) { push( S, T-data ); if (!T-Lchild !T-Rchild ) PrintStack(S); else { AllPath( T-Lchild, S ); AllPath( T-Rchild, S ); } pop(S); } /* end if(T)*/ } /*end AllPath*/ /* 输出二叉树上从根到所有叶子结点的路径*/ void OutPath( Bitree T, Stack *S ) { while ( T !=NULL) { push(S, T-data ); if ( !T-firstchild ) Printstack(S); else OutPath( T-firstchild, S ); pop(S); T = T-nextsibling; } /*end while*/ } /*OutPath*/ /*输出树中所有从根到叶的路径*/ 和二叉树类似,不同的定义相应有不同的算法。 假设以二元组(F,C)的形式自上而下、自左而右依次输入树的各边,建立树的孩子-兄弟链表。 3、建树的存储结构的算法: A B C D E F G 例如: 对下列所示树的输入序列应为: (‘#’, ‘A’) (‘A’, ‘B’) (‘A’, ‘C’) (‘A’, ‘D’) (‘C’, ‘E’) (‘C’, ‘F’) (‘E’, ‘G’) A B C D (‘#’, ‘A’) (‘A’, ‘B’) (‘A’, ‘C’) (‘A’, ‘D’) (‘C’, ‘E’) 可见,算法中需要一个队列保存已建好的结点的指针 void CreatTree( CSTree *T ) { *T = NULL; for( scanf(fa, ch); ch!=? ?; scanf(fa, ch);) { p = GetTreeNode(ch); /*创建结点*/ EnQueue(Q, p); /*指针入队列*/ if (fa == ?#?) *T = p; /* 所建为根结点*/ else { } /*非根结点的情况*/ } /*end for*/ } /*end CreateTree */ … … 回顾与测试 二叉树的存储、遍历、线索化 树的存储 树、森林和二叉树的转换及其遍历 Huffman树的建立和Huffman编码 上机作业(四次机时完成) 作业4:参考讲义中利用先序和中序建立二叉树的算法,将其写成一个可以运行的C程序,要求如下: 二叉树中存储的数据范围仅限于26个英文字母 程序要提示用户从键盘分别输入二叉树的先序和中序序列,接受输入后,调用相应的函数完成二叉树的创建 成功创建二叉树后,程序自动输出该二叉树的后序遍历次序 作业5:已知权值集合{12,34,23,9,10,26},请写出构造该集合的二叉哈夫曼树和并进行哈夫曼编码的C程序。 树和二叉树(3) 梁春燕 华北电力大学 信息管理教研室 主要内容 二叉树的遍历算法的应用 树遍历算法的应用 3、二叉树中结点的查找和统计 4、求二叉树的深度 1、建立二叉树的存储结构 2、复制二叉树 二叉树的遍历算法的应用 1、建立二叉树的存储结构 不同的定义方法相应有不同的存储结构的建立算法 例如: 以空白字符“ ”表示 A B C D A(B( ,C( , )),D( , )) 空树 只含一个根结点的二叉树 A 以字符串“A ”表示 以下列字符串表示 通过给定字符串建立二叉树 字符串按“根 左子树 右子树”给出 typedef enum{ERR,OK} Status; Status CreateBiTree(BiTree *T) { char ch; scanf(ch); if (ch==

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档