- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
測绘软件设计与实现
实验一:二叉树的基本操作实现及其应用
一、实验目的
1.熟悉二叉树结点的结构和对二叉树的基本操作。
2.掌握对二叉树每一种操作的具体实现。
3.学会利用递归方法编写对二叉树这种递归数据结构进行处理的算法。
4.会用二叉树解决简单的实际问题。
二、实验内容
设计程序实现二叉树结点的类型定义和对二叉树的基本操作。该程序包括二叉树结构类型以及每一种操作的具体的函数定义和主函数。
1. 初始化二叉树.
2. 按先序序列建立二叉树.
3. 判断二叉树是否为空.
4. 先序、中序、后续序列遍历二叉树.
5. 求二叉树的深度.
6. 求二叉树节点的个数.
三、代码清单
#includeiostream
using namespace std;
#includestdlib.h
typedef struct BitNode // 用结构体定义二叉树节点
{
char data;
struct BitNode *lchild,*rchild;
}*BitTree;
class C_JDC_BinTree
{
public:
C_JDC_BinTree(){}; //构造函数
~C_JDC_BinTree(){};//析构函数
void BinTreeInit(BitTree BT);//初始化二叉树,即把树根指针置空
int BinTreeCreat(BitTree BT);//按先序次序建立一个二叉树
void BinTreeEmpty(BitTree BT);//检查二叉树是否为空
void BinTraverse(BitTree BT);//先序序列遍历二叉树
void BinTraversezh(BitTree BT);//先序序列遍历二叉树
void BinTraverseho(BitTree BT);//先序序列遍历二叉树
int BinTreeDepth(BitTree BT);//求二叉树的深度
int BinTreeCount(BitTree BT);//求二叉树中所有结点数
};
//···············公共函数实现部分····················
void C_JDC_BinTree::BinTreeInit(BitTree BT)//初始化二叉树,即把树根指针置空
{
BT=(BitTree)malloc(sizeof(BitNode));
BT-data=NULL;
cout二叉树初始化成功!endl;
}
int C_JDC_BinTree::BinTreeCreat(BitTree BT)//按先序次序建立一个二叉树
{
char ch;
cinch;
if(ch==#) BT=NULL;
else
{
if(!(BT=(BitTree)malloc(sizeof(BitNode))))
exit(0);
BT-data=ch;
BinTreeCreat(BT-lchild);
BinTreeCreat(BT-rchild);
}
return 0;
}
void C_JDC_BinTree::BinTreeEmpty(BitTree BT)//检查二叉树是否为空
{
if(BT-data==NULL)
cout是空二叉树!endl;
else
cout不是空二叉树!endl;
}
void C_JDC_BinTree::BinTraverse(BitTree BT)//先序序列遍历二叉树
{
if(BT!=NULL)
{
coutBT-data;
BinTraverse(BT-lchild);
BinTraverse(BT-rchild);
}
}
void C_JDC_BinTree::BinTraversezh(BitTree BT)//中序序列遍历二叉树
{
if(BT!=NULL)
{
BinTraversezh(BT-lchild);
coutBT-data;
BinTraversezh(BT-rchild);
}
}
void C_JDC_BinTree::BinTraverseho(BitTree BT)//后续序列遍历二叉树
{
if(BT!=NULL)
{
BinTraverseho(BT-lchild);
BinTraverseho(BT-rchild);
coutBT-data;
}
}
int C_JDC_BinTree::BinTreeDepth(BitTree BT)//求二叉树的深度
{
i
您可能关注的文档
- 淺谈铁路项目清概管理.doc
- 淺谈铜仁地区特岗教师状况的调查与建议.doc
- 淺谈铜陵城市规划与发展方向.doc
- 淺谈铜与不锈钢合成材质的钝化处理.docx
- 淺谈铝板幕墙施工技术.doc
- 淺谈铝合金窗渗水的解决方法.doc
- 淺谈铝产品的加工工艺的优化与改进.doc
- 淺谈铝电解槽冬季施工.docx
- 淺谈铝制品钝化过程.docx
- 淺谈铝轮毂涂装线工艺(九院崔宏)0902.doc
- 注册验船师高频真题题库2025.docx
- 注册验船师高频题库带解析2025.docx
- 注册验船师考试必备资料2025.docx
- 注册验船师精选题库带分析2025.docx
- 注册验船师考前冲刺必刷题附答案2025.docx
- 新高考生物二轮复习讲练测第10讲 人体的稳态与免疫调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第13讲 生物技术与工程(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第7讲 遗传的基本规律与伴性遗传(检测)(原卷版) .docx
- 新高考生物二轮复习讲练测第13讲 生物技术与工程(检测)(原卷版).docx
文档评论(0)