- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计之二叉树和树的遍历
##大学
数据结构课程设计报告
题目: 二叉树和树的遍历
院(系): 计算机工程学院
学生姓名:
班级: 学号:
起迄日期: 2011-6-21至2011-6-25
指导教师:
2010—2011年度 第 2 学期
一、需求分析
1.问题描述:
进行二叉树和树的各种遍历,包括递归和非递归。
2.基本功能
二叉树前序递归遍历、二叉树中序递归遍历、二叉树后序递归遍历、二叉树前序非递归遍历、二叉树中序非递归遍历、二叉树后序非递归遍历、二叉树层次非递归遍历
树先根递归遍历、树后根递归遍历、树先根非递归遍历、树后根非递归遍历、树层次非递归遍历,可循环执行直到按退出键。
3.输入输出
字符串形式
二、 概要设计
1.设计思路:
在递归遍历二叉树时,主要看遍历的根的先后,可根据遍历根,遍历左子树和遍历右子树的顺序不同来实现二叉树的先序,中序,后序递归遍历,二叉树的先序和中序非递归则用到了栈,一般都是先根进栈然后左孩子进栈,二叉树的后序遍历则用到了队列,并用tag数组值0、1来标记二叉树结点的左右,树的先根非递归和后序非递归则参考了二叉树的先序和中序非递归遍历,也用到了栈,它的层次遍历则用到了队列。
2.数据结构设计:
//二叉树的结点结构
typedef struct bitnode{
char data;
struct bitnode *lchild,*rchild;
}bitnode,* bitree;
//二叉树的栈的结构
typedef struct{
bitree *base;
bitree *top;
int stacksize;
}sqstack;
为二叉树的先序和中序非递归提供栈,保存已经访问过的结点信息。
//二叉树后序非递归的栈的结构
typedef struct node1{
bitree data[30]; //默认30个元素 ,这里需要一个辅助堆栈!!!
int top;
}stack;
top能够保存结点是左还是右孩子,该栈为后序遍历提供保存结点信息。
//二叉树的队列结点结构
typedef struct qnode{
bitree data;
struct qnode *next;
}qnode,*queueptr;
//二叉树的队列结构
typedef struct{
queueptr front;
queueptr rear;
}linkqueue;
该队列能为二叉树层序遍历提供先进先出的数据访问条件
//树的结点结构
typedef struct csnode{
char data;
struct csnode *firstchild,*nextsibling;
}csnode,*cstree;
//树的栈的结构
typedef struct{
cstree *base;
cstree *top;
int stacksize;
}sqstack1;
为树的前根和后根非递归遍历提供保存已经访问过的数据信息
//树的队列结点结构
typedef struct qnode1{
cstree data;
struct qnode1 *next;
}qnode1,*queueptr1;
//树的队列结构
typedef struct{
queueptr1 front;
queueptr1 rear;
}linkqueue1;
为树的层次遍历提供条件
3.软件结构设计:
cout1:进行二叉树的操作 2:进行树的操作 3:退出endl;
这是初始界面。进行选择.
cout前序递归遍历是:;
preordertraverse(T);
cout中序递归遍历是:;
inordertraverse(T);
cout后序递归遍历是:;
postordertraverse(T);
cout前序非递归遍历是:;
preordertraverse1(T);
cout中序非递归遍历是:;
inordertraverse1(T);
cout后序非递归遍历是:;
postordertraverse1(T);
cout层次非递归遍历是:;
gradatraverse(T);
cout先根递归遍历是:;
preordertraverse2(T1);
cout后根递归遍历是:;
postordertraverse2(T1);
cou
您可能关注的文档
- 教师计算机基本操作培训计划和教案全集.doc
- 教师职业生涯的发展阶段.doc
- 教师礼仪 PPT课件.ppt
- 教师资格评审表.doc
- 教师面试心得,值得一看.doc
- 教材征订系统说明书.doc
- 教案:工商行政管理.doc
- 教科版七年级下册政治知识点归纳.doc
- 教改立项项目申报书.doc
- 教研室工作研讨会.ppt
- 2023-2024学年广东省深圳市龙岗区高二(上)期末物理试卷(含答案).pdf
- 2023-2024学年贵州省贵阳市普通中学高一(下)期末物理试卷(含答案).pdf
- 21.《大自然的声音》课件(共45张PPT).pptx
- 2023年江西省吉安市吉安县小升初数学试卷(含答案).pdf
- 2024-2025学年广东省清远市九校联考高一(上)期中物理试卷(含答案).pdf
- 广东省珠海市六校联考2024-2025学年高二上学期11月期中考试语文试题.pdf
- 2024-2025学年语文六年级上册第4单元-单元素养测试(含答案).pdf
- 2024-2025学年重庆八中高三(上)月考物理试卷(10月份)(含答案).pdf
- 安徽省安庆市潜山市北片学校联考2024-2025学年七年级上学期期中生物学试题(含答案).pdf
- 贵州省部分校2024-2025学年九年级上学期期中联考数学试题(含答案).pdf
文档评论(0)