- 91
- 0
- 约5.37千字
- 约 7页
- 2021-09-07 发布于重庆
- 举报
实验报告
课程名称 数据结构
实验名称 二叉树的遍历 日期 2013/05/30
学生学号 B 姓名 枯天蝎 班级 B110502
实验目的:
掌握二叉树的结构特征,掌握用指针类型描述、遍历二叉树的运算。
实验条件:
电脑一台 Vc++
实验内容与算法思想:
内容:
P213 实习题 1
建立一棵用二叉链表方式存储的二叉树,并对其进行遍历(先序、中序、
和后序) ,打印输出遍历结果。基本要求如下:
从键盘接受输入线序序列,以二叉链表作为存储结构,建立二叉树(以先
序来建立)并对其进行遍历(先序、中序、后序) ,然后将遍历结果打印输出。
要求采用递归和非递归两种方法实现。
算法思想:
定义二叉树结构体类型时,也定义了一个顺序栈结构体类型,用以辅助完
成二叉树的非递归遍历。
由键盘输入二叉树先序序列,用扩展线序序列函数接受并创建二叉链表。
遍历前先判断二叉树是否为空,若为空,执行空操作;否则依次执行各遍
历函数相应操作。
先序遍历算法思想,先访问根节点,然后按先序遍历左子树,再按先序遍
历右子树。
中序遍历算法思想,先按中序遍历左子树,再访问根节点,然后按中序访
问右子树。
后序遍历算法思想,先按后序遍历左子树,接着按中序遍历右子树,然后
访问根节点。
运行结果:
递归算法: 非递归算法:
实验总结(结论或问题分析) :
通过实验,加深了对 C 语言尤其是函数调用部分的认识和掌握。
没有找到在实验运行结果上明确区分递归算法实现的遍历和非递归算法实
现的遍历的方法。
实验成绩 任课教师签名 张红霞
附:源程序:
递归算法程序
#include
#include
#include
#define maxsize 100
#define FALSE 0
#define TRUE 1
typedef struct node *bt=NULL;
else
{
*bt=(bitree)malloc(sizeof(bitnode));
(*bt)-data=ch;
cteatebitree(((*bt)-lchild));
cteatebitree(((*bt)-rchild));
}
}
/* 先序递归遍历 */
void preorder(bitree root)
{
if(root!=NULL)
{
printf(%c ,root-data);
preorder(root-lchild);
preorder(root-rchild);
}
}
/* 中序递归遍历 */
void inorder(bitree root)
{
if(root!=NULL)
{
preorder(root-lchild);
您可能关注的文档
最近下载
- 合成生物学教材配套电子课件完整版电子教案.pptx
- AGMA 2000--A88-中文翻译版本.pdf VIP
- TwinSAFE EL6900 安全模块基础使用指南(针对TC3.1.4020.0版本).pdf VIP
- ISO22163-2023内审员审核技术培训.pdf VIP
- 提高钻孔灌注桩成孔质量一次验收合格率.docx VIP
- (完整版)放射工作人员培训考试试题(附答案).docx VIP
- 习题答案数字电路与系统设计 (8).docx VIP
- 小学科学四下作业本(浙江).pdf VIP
- 标准图集-中南11ZJ111 变形缝建筑构造.pdf VIP
- 精品解析:江苏省苏州市吴中区2025年中考二模考试英语试题(解析版).docx VIP
原创力文档

文档评论(0)