没有合适的资源?快使用搜索试试~ 我知道了~
1163450201-第二次实验1
需积分: 0 0 下载量 161 浏览量
2022-08-04
15:05:50
上传
评论
收藏 1001KB PDF 举报
温馨提示
试读
11页
1. 如何判断队列为空 2. 如何实现文件输入二叉树 3. 如何判断完全二叉树
资源推荐
资源详情
资源评论
1 / 11
《数据结构与算法》实验报告
学生姓名 院(系) 计算机科学与技术
学 号 专 业
实验时间 实验地点
实验项目 实验 2/4:树型结构的建立与遍历
实验目的:将课程的基本原理、技术和方法与实际应用相结合,训练和提高
学生组织、存储和处理信息的能力,以及复杂问题的数据结构设计能力和程序设
计能力,培养软件设计与开发所需要的实践能力。
实验要求:灵活运用基本的数据结构和算法知识,对实际问题进行分析和抽
象;结合程序设计的一般过程和方法为实际问题设计数据结构和有效算法;用高
级语言对数据结构和算法进行编程实现、调试,测试其正确性和有效性。
实验内容:
树型结构的遍历是树型结构算法的基础,本实验要求编写程序演示二叉树
的存储结构的建立方法和遍历过程。
1) 编写建立二叉树的二叉链表存储结构(左右链表示)的程序,并以适当的形
式显示和保存二叉树;
2) 采用二叉树的二叉链表存储结构,编写程序实现二叉树的先序、中序和后序
遍历的递归和非递归算法以及层序遍历算法,并以适当的形式显示和保存二
叉树及其相应的遍历序列;
3) 给定一个二叉树, 编写算法完成下列应用:(二选一)
a) 判断其是否为完全二叉树;
b) 求二叉树中任意两个结点的公共祖先。
数据结构定义:
/*二叉树结构,左右链表定义*/
typedef struct Node
{
struct Node * lchild;
struct Node * rchild;
char data;
}* BTREE, Node;
/*队列定义*/
struct QUEUE
{
2 / 11
BTREE data[MAX];
int front;
int rear;
};
算法设计与分析(要求画出核心内容的程序流程图):
先序遍历的递归(左)与非递归(右)
递归算法:
先打印当前根节点,再依次调用递归函数,分别输入左子树与右子树,时间
复杂度为 O(n)
非递归算法:
使用栈来保存之前遍历节点,此时先输出根节点,再将根节点及其左路子树
(左子树及其左子树的左子树等)存入栈中,直到左子树为空,再访问其右子树,
并将右子树作为根节点寻找左路子树压入栈中,重复,这样实现先输出根节点,
3 / 11
在输出左子树,最后输出右子树顺序。节点遍历一次,时间复杂度为 O(n)
中序遍历的递归(左)与非递归(右)
递归算法:
先调用递归函数输入左子树,再打印当前根节点,最后调用递归函数,输入
右子树,时间复杂度为 O(n)
非递归算法:
使用栈来保存之前遍历节点,此时先将根节点及其左路子树存入栈中,直到
左子树为空,再输出根节点,再访问其右子树,并将右子树作为根节点寻找左路
子树存入栈中,重复以上动作,这样实现先输出左子树,在输出根节点,最后输
出右子树顺序。节点遍历一次,时间复杂度为 O(n)
剩余10页未读,继续阅读
资源评论
尹子先生
- 粉丝: 20
- 资源: 324
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- VIVADO中UART IP核使用
- 【深度学习实际案例解析】深度学习实际案例解析
- 封装swagger组件,提供全新UI以及无状态登录接口调用解决方案
- 小龙坎支局2024年4月渠道积分核对数据.xlam
- onlyoffice搭建及与alist使用的view.html
- Quadcopter-UAV-attitude-estimation-linux常用命令大全demo
- Quadcopter-UAV-attitude-estimation-based-on-数据库课程设计
- pbdlib-python-master.zip
- 43904245495352013_base.apk
- 基于springboot+vue + redis的工作流审批系统
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功