没有合适的资源?快使用搜索试试~ 我知道了~
首页c语言 实现二叉树操作 用栈实现算术表达式求值
资源详情
资源评论
资源推荐
沈阳理工大学课程设计专用纸
目 录
题目 一.二叉树操作(1)二.算术表达式求..........................................................................................................1
一、课程设计的目的...........................................................................................................................................1
二、课程设计的内容和要求...............................................................................................................................1
三、题目一设计过程...........................................................................................................................................1
四、题目二设计过程...........................................................................................................................................5
五、设计总结.....................................................................................................................................................13
六、参考文献.....................................................................................................................................................13
沈阳理工大学
沈阳理工大学课程设计专用纸
No. 1
题目 一.二叉树操作(1)二.算术表达式求
一、课程设计的目的
本学期我们对《数据结构》这门课程进行了学习。这门课程是一门实践性非常强
的课程,为了让大家更好地理解与运用所学知识,提高动手能力,我们进行了此次课
程设计实习。这次课程设计不但要求学生掌握《数据结构》中的各方面知识,还要求
学生具备一定的 C 语言基础和编程能力。
(1)题目一的目的:
1、掌握二叉树的概念和性质
2、掌握二叉树的存储结构
3、掌握二叉树的基本操作
(2)题目二的目的:
1、掌握栈的顺序存储结构和链式存储结构
2、掌握栈的先进后出的特点
3、掌握栈的基本运算
二、课程设计的内容和要求
(1)题目一的内容和要求:
1、编写已知二叉树的先序、中序序列,恢复此二叉树的程序
2、编写求二叉树深度的程序
(2)题目二的内容和要求:
1、算术表达式由操作数、运算符和界限符组成。操作数是正整数,运算符为
加减乘除,界限符有左右括号和表达式起始
2、将一个表达式的中缀形式转化为相应的后缀形式
3、依据后缀表达式计算表达式的值
三、题目一设计过程
1、题目分析
沈阳理工大学
沈阳理工大学课程设计专用纸
No. 2
现已知一棵二叉树的先序遍历序列和中序遍历序列,依次从先序遍历序列中取
结点,由先序序列确定根结点(就是第一个字母),每次取出一个结点就与中序遍
历的序列进行比较,当相等的时候,中序遍历序列就被分成以该结点为根的二叉
树子树,该结点左部分为左子树,右部分为右子树,直到取完先序列里的所有结
点,则二叉树构造完毕(树用链式存储结构存储),用递归实现!
由建好的二叉树,先判断这棵树是否为空,若不为空则找数的左子树,统计它
的高度,然后找树的右子树,统计它的高度,比较左子树和右子树的高度,然后
返回其中大的那个值加一,则求出数的高度。这里用递归实现!
2、算法描述
main ( )(主函数)
先构造一颗二叉树,初始化为空,用来存储所构造的二叉树,并输入一棵树
的先序序列和中序序列,并统计这个序列的长度。然后调用实现功能的函数。
void CreateBiTree(BiTree *T,char *pre,char *in,int len)(由先序序列和中序序列构造
二叉树)
根据前序遍历的特点, 知前序序列(pre)的首个元素(pre[0])为根(root), 然后在中
序序列(in)中查找此根(pre[0]), 根据中序遍历特点, 知在查找到的根(root) 前边的序
列为左子树, 后边的序列为右子树。 设根前边有 n 个元素,则又有, 在前序序列中,
紧跟着根(root)的 n 个元素序列(即 pre[1...n]) 为左子树, 在后边的为右子树,而构造
左子树问题其实跟构造整个二叉树问题一样,只是此时前序序列为 pre[1...n]), 中序
序列为 in[0...n-1], 分别为原序列的子串, 构造右子树同样。这里用递归实现!
int Depth(BiTree T)(求树的深度)
当所给的参数 T 是 NULL 时,返回 0。说明这个树只有一个叶子节点深度为
0,当所给的参数不是 NULL 时,函数调用自己看看这个参数的左分支是不是
NULL,如果不是继续调用自己看看左分支的左分支是不是 NULL,直到最后一个
的左分支是 NULL。 然后看与最后一个左分支并列的右分支是不是 NULL,不是
的话自动调用自己,直到是 NULL。同理求出右分支,然后左分支深度和右分支
深度比较,返回值大的作为深度。
3、源代码
#include<stdio.h>
#include<malloc.h>
typedef struct Node
{
char data;
struct Node *lchild;
struct Node *rchild;
}*BiTree,BitNode;
void InitBitTree(BiTree *T);//初始化一棵树
沈阳理工大学
剩余13页未读,继续阅读
liangjiang1989
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0