中国矿业大学测绘软件实习报告材料 下载本文

内容发布更新时间 : 2024/10/25 19:23:44星期一 下面是文章的全部内容请认真阅读。

标准文案

中国矿业大学

测绘软件设计与实现

实验报告

学 号: 姓 名: 班 级: 指导教师: 王永波

实验一 二叉树的构建及其遍历算法的实现

大全

标准文案

实验目的:

完成二叉树的构建以及二叉树的遍历等,加深对树以及二叉树的遍历相关知识的理解。

实验内容:

1.二叉树类的定义及建立。

2.二叉树的前序、中序、后序遍历。

主要代码:

template class C_LJH_BinTree {

public:

C_LJH_BinTree();//构造函数,根据输入前序序列由键盘输入

~C_LJH_BinTree();//析构函数 void PreOrder();//前序遍历 void InOrder();//中序遍历 void PostOrder();//后序遍历 private: T data;

C_LJH_BinTree *lchild,*rchild;

bool NO_Die; };

template

C_LJH_BinTree::C_LJH_BinTree() {

NO_Die = false; lchild = NULL; rchild = NULL; char ch; cin>>ch;

if (ch == '#') {

NO_Die = true;//若为#,代表空节点 } else {

this->data = ch;//保存输入的节点

//左子树

C_LJH_BinTree *newChild0 =

大全

new C_LJH_BinTree();

if (newChild0->NO_Die) delete newChild0; else

this->lchild= newChild0;

//右子树

C_LJH_BinTree *newChild1 = new C_LJH_BinTree();//直接创建子节点,

if (newChild1->NO_Die) delete newChild1; else

this->rchild= newChild1; } }

//析构函数

template

C_LJH_BinTree::~C_LJH_BinTree() {

if (lchild) delete lchild; //删除父节点之前,先删除子节点

if (rchild) delete rchild; }

//前序遍历

template

void C_LJH_BinTree::PreOrder() {

cout<data<<\先输出父节点,然后子节点按照父节点做 if (lchild!=NULL)

this->lchild->PreOrder(); if (rchild!=NULL)

this->rchild->PreOrder();

标准文案

}

//中序遍历

template

void C_LJH_BinTree::InOrder() {

if (lchild) lchild->InOrder();

cout<data<<\ if (rchild) rchild->InOrder(); }

//后序遍历

template void C_LJH_BinTree::PostOrder() {

if (lchild) lchild->PostOrder(); if (rchild) rchild->PostOrder();

cout<data<<\ }

int main() {

cout<<\请输入二叉树的前序遍历:\ cout<<\(以#作为分支结尾,例如:A B # # C # #)\

C_LJH_BinTree m_tree; cout<

cout<<\前序遍历为:\ m_tree.PreOrder(); cout<

cout<<\中序遍历为:\ m_tree.InOrder(); cout<

cout<<\后序遍历为:\ m_tree.PostOrder(); cout<

实验结果:

实验体会:

通过本次试验,理解了二叉树类的构建、二叉树的建立及其遍历。作为第一次实验,内容上实现实验所要求的目没有多大的难处,但其从数据结构出发,让我回忆起很多以前学过的知识,对我来说,收获不少。

大全