实验报告3 二叉树.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验报告3 二叉树

《数据结构》实验报告三 班级: 姓名: 学号: 日期: 200810.15 题目: 二叉树 上机实验的问题和要求: 问题描述:建立一棵二叉树,编程实现二叉树的如下操作: 1)按先序序列构造一棵二叉链表表示的二叉树T; 2)对这棵二叉树进行先序遍历(采用递归算法实现)与中序遍历(采用非递归算法实现),分别输出结点的遍历序列; 2)求二叉树的深度(选做)。 基本要求:从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立)。 二、程序设计的基本思想,原理和算法描述: (包括程序的模块结构,数据结构,输入/输出设计,符号名说明等) 基本思想:二叉树的逻辑结构与存储结构,顺序存储, 程序的模块结构: 1.以二叉链表形式建立一个二叉树:CreateBiTree(BiTree T); 2.实现对二叉树的遍历: ??PreOrderTraverse(BiTreeT); ??InOrderTraverse(BiTreeT); 3.求二叉树的深度:BiTreeDepth(BiTreeT); 4.主函数Main( )处理输入,结果打印输出与用户界面。 主要数据结构:栈的基本操作(创建栈,进栈,出栈,判断栈是否为空,取得栈顶元素)树的创建 算法的伪码描述: 1)typedef struct BiTNode{ TElemType data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; 2) typedef struct{ BiTree strack[size]; int top; }strack,*Stack; 3)void InitStack(Stack S){ S-top=0; } 4) void push(Stack S,BiTree T){ S-strack[S-top]=T; S-top++; } 5)BiTree Pop(Stack S,BiTree p){ if(S-top==0)return NULL; S-top--; p=S-strack[S-top]; S-strack[S-top]=NULL; return p; } 6) int StackEmpty(Stack S){ if(S-top==0) return 1; else return 0; } 7) BiTree GetTop(Stack S,BiTree p){ if(S-top==0) return NULL; p=S-strack[S-top-1]; return p; } 8)BiTree CreateBiTree(){ char c; BiTree T; scanf(%c,c); if(c== )T=NULL; else{ if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) exit(); T-data=c; T-lchild=CreateBiTree(); T-rchild=CreateBiTree(); } return T; } 9) PreOrderTraverse(BiTree T){ if(T){ printf(%c,T-data); PreOrderTraverse(T-lchild); PreOrderTraverse(T-rchild); } return; } 10) InOrderTraverse(BiTree T){ BiTree p; S=malloc(sizeof(Stack)); InitStack(S); push(S,T); while(!StackEmpty(S)){ while((p=GetTop(S,p))(p!=NULL))push(S,p-lchild); p=Pop(S,p); if(!StackEmpty(S)){ p=Pop(S,p); printf(%c,p-data); push(S,p-rchild); } } return ; } 11)int BiTreeDepth(BiTree T){ int depthval,depthleft,depthright; if(!T) depthval=0; el

文档评论(0)

yurixiang1314 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档