文档详情

数据结构课程设计二叉树的遍历报告.doc

发布:2017-02-14约2.2千字共9页下载文档
文本预览下载声明
数据结构课程设计报告 姓 名 班 级 学 号 指导老师 课程设计目的 培养学生用学到的书本知识解决实际问题的能力;培养实际工作所需要的动手能力;培养学生以科学理论和工程上能力的技术,规范地开发大型、复杂、高质量的应用软件和系统软件具有关键性作用;通过课程设计的实践,学生可以在程序设计方法、上机操作等基本技能和科学作风方面受到比较系统和严格的训练。 课程设计要求 1)学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课设的要求。有问题及时主动通过各种方式与教师联系沟通。 数据结构 typedef BTREENODEPTR elemtype; 队列数据类型定义 typedef struct{ elemtype *elem; int front,rear; int size; }SqQueue; 栈数据类型定义 typedef struct stack_tag{ elemtype *elem; int top; int size; }SQSTACK; 二叉树数据类型定义 typedef struct btreenode{ char data; struct btreenode *lchild,*rchild; }BTREENODE,*BTREENODEPTR,*BTREE; 主要模块设计 BTREE CreateBtree1(char *str);//创建二叉树 void PreOrder(BTREE root);//先序递归遍历二叉树 void InOrder(BTREE root);//中序递归遍历二叉树 void PostOrder(BTREE root);//后序递归遍历二叉树 void PreOrder_1(BTREE root);//先序非递归遍历二叉树 void InOrder_1(BTREE root);//中序非递归遍历二叉树 void PostOrder_1(BTREE root);//后序非递归遍历二叉树 void LayerOrder(BTREE root);//层次遍历 其他模块包括栈的初始化及其基本操作和队列的初始化及基本操作。 详细设计 二叉树的建立 其中mark的值1、2、3、4分别指str[i]为字母、‘(’、‘,’、‘)’; tag为左、右孩子的标志; 二叉树的递归遍历(以先序遍历为例) 二叉树的非递归遍历(以先序遍历为例) 二叉树的层次遍历 访问元素所指结点,若该元素所指结点的左右孩子结点非空,则该元素所指结点的左孩子指针和右孩子指针顺序入队。 运行结果 建立二叉树 先序遍历 中序遍历 后序遍历 层次遍历 退出程序 出错信息 设计总结 二叉树是数据结构的的基本内容。虽然程序规模不大,我依然付出了努力,仍免不了各种错误的出现。编程过程需要很大的毅力和耐心,而且要有良好的思维和扎实的专业基础知识,所以我需要不断的学习,发现自身不足之处并改正它,逐步提高自己。 c a d f g 主菜单 先序递归遍历 中序递归遍历 后序递归遍历 先序非递归遍历 中序非递归遍历 后序非递归遍历 层次遍历 结束 将以广义表形式输入的二叉树接收到数组str[80]中,成功建立二叉树 root=null 检查str[1~’\0’] ‘(’ ‘)’ ‘,’‘ mark=1;root-data=str[0],root-lchild=root-rchild=null;p=root; str[0]是否为字母 Y N N mark==2? mark=2 str[i]入栈 tag=0 mark==3? mark=3 tag=1 N mark=4 pop为空 return null N Y Y ‘)’‘ mark==1栈不空 新建结点p p-data=str[i] p-lchild=p-rchild=null tag==0? 循环结束后return root 栈顶-rchild=p 栈顶-lchild=p Y N 结点为空 N 访问根节点 先序遍历方式遍历左子树 先序遍历方式遍历右子树 结束 Y 开始 初始化队列,root入队 栈非空 出栈p;打印p-data Y p-lchild!=null Y p-lchild入
显示全部
相似文档