首页 二叉树实验报告

二叉树实验报告

举报
开通vip

二叉树实验报告重庆交通大学 综合性设计性实验报告 班        级: 软件开发 专业 2010级一班 实验项目名称:    二叉树            实验项目性质:    设计性实验            实验所属课程:    数据结构            实验室(中心):      6教                指 导 教 师 :        鲁云平          实验完成时间:   2012    年 4 月 29 日 1、实验目的 主要完成以下功能: 1. 建立二叉树 2. 计算结点所...

二叉树实验报告
重庆交通大学 综合性设计性 实验报告 化学实验报告单总流体力学实验报告观察种子结构实验报告观察种子结构实验报告单观察种子的结构实验报告单 班        级: 软件开发 专业 2010级一班 实验项目名称:    二叉树            实验项目性质:    设计性实验            实验所属课程:    数据结构            实验室(中心):      6教                指 导 教 师 :        鲁云平          实验完成时间:   2012    年 4 月 29 日 1、实验目的 主要完成以下功能: 1. 建立二叉树 2. 计算结点所在的层次 3 .统计结点数量和叶结点数量 4. 计算二叉树的高度 5. 计算结点的度 6. 找结点的双亲和子女 7. 二叉树的遍历 8. 二叉树的输出等等 2、实验内容及要求 1.二叉树的结点结构,二叉树的存储结构由学生自由选择和设定 2.实验完成后上交打印的实验 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 ,报告内容与前面所给定的实验模板相同 3.将实验报告电子版和源代码在网络教学平台提交 3、实验设备及软件 Visual studio 2010 四、设计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ㈠ 题目(老师给定或学生自定) 二叉树的简单应用 ㈡ 设计的主要思路 通过递归原理实现大部分遍历二叉树功能 ㈢ 主要功能 1. 建立二叉树 2. 计算结点所在的层次 3 .统计结点数量和叶结点数量 4. 计算二叉树的高度 5. 计算结点的度 6. 找结点的双亲和子女 7. 二叉树的遍历 8. 二叉树的输出 5、主要代码 栈头文件:stack.h class Stack { public: Stack(int sz=100); ~Stack(){delete[]elements;} void Push(const T &x); bool Pop(T &x); bool getTop(T &x); bool IsEmpty()const{return(top==-1)?true:false;} bool IsFull()const{return(top==maxSize-1)?true:false;} private: T *elements; int top; int maxSize; void overflowProcess(); }; template Stack::Stack(int sz):top(-1),maxSize(sz) { elements=new T[maxSize]; assert(elements!=NULL); }; template void Stack::overflowProcess() { T*newArray=new T[maxSize+stackIncreament]; if(newArray=NULL){cerr<<"存储分配失败!"< void Stack::Push(const T &x) { if(IsFull()==true)overflowProcess(); elements[++top]=x; }; template bool Stack::Pop(T &x) { if(IsEmpty()==true)return false; x=elements[top--]; return true; }; template bool Stack::getTop(T &x) { if(IsEmpty()==true)return false; x=elements[top]; return true; }; 二叉树头文件 tree.h #include #include"stack.h" #include #include using namespace std; template struct BinTreeNode { T data; BinTreeNode *leftChild,*rightChild; BinTreeNode():leftChild(NULL),rightChild(NULL){} BinTreeNode(T x,BinTreeNode *l=NULL,BinTreeNode *r=NULL):data(x),leftChild(l),rightChild(r){} }; template class BinaryTree { public: BinTreeNode *root;//二叉树的根指针 BinTreeNode *current; T RefValue;//数据输入停止标志 BinaryTree():root(NULL){}//构造函数 BinaryTree(T value):RefValue(value),root(NULL){}//构造函数 BinaryTree(BinaryTree&s);//复制构造函数 ~BinaryTree(){destroy(root);}//析构函数 bool IsEmpty(){return (root==NULL)?true:false;}//判断二叉树空否 BinTreeNode *Parent(BinTreeNode *current)//返回父结点 {return(root==NULL || root==current)?NULL:Parent(root,current);} BinTreeNode *LeftChild(BinTreeNode *current)//返回左子女 {return(current!=NULL)?current->leftChild:NULL;} BinTreeNode *RightChild(BinTreeNode *current)//返回右子女 {return(current!=NULL)?current->rightChild:NULL;} int Height(){return Height(root);}//返回树高度 int Size(){return Size(root);}//返回结点数 BinTreeNode *getRoot()const{return root;}//取根 void preOrder(void( *visit)(BinTreeNode *p))//前序遍历 {preOrder(root,visit);}    void CreateBinTree_one(ifstream& in,BinTreeNode *& BT);//从文件读入建树 void CreateBinTree_two(ifstream& in,BinTreeNode *& subTree); void destroy(BinTreeNode *&subTree);//删除 int Height(BinTreeNode *subTree);//返回树高度 int Size(BinTreeNode *subTree);//返回结点数 void Leaf(BinTreeNode *subTree,int &x);//叶结点数目 BinTreeNode *Parent(BinTreeNode *subTree,BinTreeNode *current);//返回父结点 void Traverse(BinTreeNode *subTree);//前序遍历输出 void degree(BinTreeNode *subTree,char &x);//指定结点的度 void level(BinTreeNode *subTree,char &x,int &y);//指定结点的层次 void Search(BinTreeNode *subTree,char &x);//前序遍历搜索并查找指定结点的子女结点和父结点 void PrintBTree(BinTreeNode *subTree);//以广义 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 的形式输出 void perOrder(BinTreeNode* subTree,void(*visit)(BinTreeNode *p));//前序遍历 }; template void BinaryTree::destroy(BinTreeNode *&subTree) { if(subTree!=NULL) { destroy(subTree->leftChild); destroy(subTree->rightChild); delete subTree; } } template void BinaryTree::CreateBinTree_one(ifstream& in,BinTreeNode *& BT) { Stack *>s; BT=NULL; BinTreeNode *p,*t;int k; char ch; in>>ch; while(ch!='#') { switch(ch) { case '(':s.Push(p);k=1;break; case ')':s.Pop(t);break; case ',':k=2;break; default: p=new BinTreeNode(ch); if(BT==NULL) BT=p; else if(k==1) {s.getTop(t);t->leftChild=p;} else {s.getTop(t);t->rightChild=p;} } in>>ch; } } template void BinaryTree::CreateBinTree_two(ifstream& in,BinTreeNode *&subTree) 继续阅读
本文档为【二叉树实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_633808
暂无简介~
格式:doc
大小:28KB
软件:Word
页数:12
分类:工学
上传时间:2019-02-26
浏览量:20