实验五:树和二叉树实验——信管1134--05
来源:互联网 发布:qq怎么设置mac在线最新 编辑:程序博客网 时间:2024/05/16 00:41
《数据结构》实验五: 树和二叉树实验
一..实验目的
巩固树和二叉树的相关知识,特别是二叉树的相关内容。学会运用灵活应用。
1.回树和二叉树的逻辑结构和存储方法,清楚掌握树和二叉树的遍历操作。
2.学习树的相关知识来解决实际问题。
3.进一步巩固程序调试方法。
4.进一步巩固模板程序设计。
二.实验时间
准备时间为第10周到第12前半周,具体集中实验时间为12周周四。2个学时。
三..实验内容
1.自己设计一个二叉树,深度最少为4,请递归算法分别用前序、中序、后序遍历输出树结点。
2.写程序判定出六枚硬币中的一枚假硬币。参照课本P136页8枚硬币的判定方法。3. 自己确定2n(大小自己确定)个同学参加学校羽毛球淘汰比赛,请定程序,存放各队员比赛结果,并根据结果确定冠亚军。全
第一题是必做题,第二题和第三题选做题。选做并做对者每题奖励5分。
四.参考资料实验教材P207到218
#include<iostream> using namespace std; template <class datatype> struct BI { datatype data; BI<datatype>* lchild; BI<datatype>* rchild; }; template <class datatype> class tree { public: tree(){root=create(root);} ~tree(){release(root);} void preorder(){preorder1(root);} void inorder(){inorder1(root);} void postorder(){postorder1(root);} void leverorder(); int depth1(BI<datatype>*bt); BI<datatype>*root; BI<datatype>*create(BI<datatype>*bt); void release(BI<datatype>*bt); void preorder1(BI<datatype>*bt); void inorder1(BI<datatype>*bt); void postorder1(BI<datatype>*bt); }; template <class datatype> BI<datatype>* tree<datatype>::create(BI<datatype>*bt) { datatype ch; cin>>ch; if(ch=='#')bt=NULL; else{ bt=new BI<datatype>; bt->data=ch; bt->lchild=create(bt->lchild); bt->rchild=create(bt->rchild); } return bt; } template <class datatype> void tree<datatype> :: release(BI<datatype>*bt) { if(bt!=NULL) { release(bt->lchild); release(bt->rchild); delete bt; } } template <class datatype> void tree<datatype>::preorder1(BI<datatype>*bt) { if(bt==NULL)return; else{ cout<<bt->data<<" "; preorder1(bt->lchild); preorder1(bt->rchild); } } template <class datatype> void tree<datatype>::inorder1(BI<datatype>*bt) { if(bt==NULL)return; else{ inorder1(bt->lchild); cout<<bt->data<<" "; inorder1(bt->rchild); } } template <class datatype> void tree<datatype>::postorder1(BI<datatype>*bt) { if(bt==NULL)return; else{ postorder1(bt->lchild); postorder1(bt->rchild); cout<<bt->data<<" "; } } template <class datatype> void tree<datatype>::leverorder() { int front,rear; BI<datatype>*Q[100]; front=rear=-1; if(root==NULL)return; Q[++rear]=root; while(front!=rear) { BI<datatype>* q; q=Q[++front]; cout<<q->data<<" "; if(q->lchild!=NULL)Q[++rear]=q->lchild; if(q->rchild!=NULL)Q[++rear]=q->rchild; } } template <class datatype> int tree<datatype>::depth1(BI<datatype>*bt) { int hl,hr,max; if(bt) { hl=depth1(bt->lchild); hr=depth1(bt->rchild); max=hl>hr?hl:hr; return max+1; } else return 0; } void main() { cout<<"请构造一个二叉树:"<<endl; tree<char> t1; cout<<endl<<"——前序遍历——"<<endl; t1.preorder(); cout<<endl<<"——中序遍历——"<<endl; t1.inorder(); cout<<endl<<"——后序遍历——"<<endl; t1.postorder(); cout<<endl<<"——层次遍历——"<<endl; t1.leverorder(); cout<<endl<<"二叉树深度为:"<<endl<<t1.depth1(t1.root)<<endl; }
0 0
- 实验五:树和二叉树实验——信管1134--05
- 实验五:树和二叉树实验——信管1133-09
- 信管16数据结构实验6:树和二叉树的实验2
- 实验五: 树和二叉树实验
- 实验五: 树和二叉树实验
- 实验五:树和二叉树实验
- 实验五: 树和二叉树实验
- 实验五: 树和二叉树实验
- 实验五:树和二叉树实验
- 实验五: 树和二叉树实验
- 实验五 二叉树
- 《数据结构》实验五: 树和二叉树实验
- 数据结构》实验五: 树和二叉树实验
- (实验五)《数据结构》第五章 树和二叉树实验
- 《数据结构》实验五: 树和二叉树实验
- 《数据结构》实验五: 树和二叉树实验
- 《数据结构》实验五: 树和二叉树实验总结
- 《数据结构》实验五: 树和二叉树实验
- 提升工作效率的软件(大众版) by Mr. Niebieski
- Eclipse设置编辑器中的字体为Courier New
- 【算法导论】中位数和顺序统计量之选择算法
- 文本框输入监控事件
- OCILIB使用事务
- 实验五:树和二叉树实验——信管1134--05
- Apache commons exec 简介和简单ping命令方法调用实现
- 如何显示光流图 opencv
- 练习7.9
- 总结5种比较高效常用的排序算法
- android手机root后的安全问题(二)
- 参数传递的方法
- 利用Apache commons exec 实现指定应用打开对应文件
- 练习7.15