欢迎来到天天文库
浏览记录
ID:58982758
大小:42.50 KB
页数:5页
时间:2020-10-27
《二叉树操作实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验报告实验名称:对二叉树的操作。实验内容:1、按中序遍历结果从小到大的顺序建立一棵含有n个结点的二叉树,采用二叉链表存储;2、中序、前序、后序改二叉链表;3、输入一个数据,访问任一结点进行查找,如果有则返回“查找成功。”,没有则返回“查找不成功。”4、设计一个析构函数,释放结点空间。实验代码:#includeclassnode{private:intdata;classnode*left;classnode*right;voidRelease(classnode*a);public:voidcreate(inta);voidino
2、rder(classnode*q);voidpreorder(classnode*m);voidpostorder(classnode*n);voidseek(classnode*l,intk);~node();};typedefclassnodetreenode;//重定义二叉树结点类型。typedeftreenode*zz;//重新定义指针。zzroot,p;voidnode::create(intx){zzs;intflag=0;//结点成功插入后flag=1。s=newtreenode;s->data=x;s->left=NULL;s->right
3、=NULL;if(root==NULL)root=s;else{p=root;while(!flag)if(xdata)if(p->left==NULL){p->left=s;flag=1;}elsep=p->left;elseif(p->right==NULL){p->right=s;flag=1;}elsep=p->right;}}voidnode::inorder(zzq){if(q!=NULL){inorder(q->left);cout<data<<"";inorder(q->right);}}voidnode::preorder
4、(zzm){if(m==NULL)return;else{cout<data<<"";preorder(m->left);preorder(m->right);}}voidnode::postorder(zzn){if(n==NULL)return;else{postorder(n->left);postorder(n->right);cout<data<<"";}}voidnode::seek(classnode*l,intk){if(l==NULL)cout<<"查找失败,不存在该数据。"<data==k
5、)cout<<"查找成功。"<data)seek(l->left,k);elseseek(l->right,k);}zza;node::~node(){Release(a);};voidnode::Release(zza){if(a!=NULL){Release(a->left);Release(a->right);deletea;}}voidmain(){nodetree;intk,a,n,m;root=NULL;cout<<"输入将要构建的二叉树的结点个数:";cin>>n;cout<<"请输入各结点数据:"<6、dl;for(inti=1;i<=n;i++){cin>>k;tree.create(k);}p=root;cout<<"中序遍历结果:";tree.inorder(p);cout<>m;for(i=1;i<=m;i++){cout<<"输入要查找的数据:";cin>>a;tree.seek(p,a);}tree.~nod7、e();}实验结果:实验体会:(1)通过本次试验,我更好的掌握了二叉树的逻辑结构、二叉树的二叉链表存储结构以及基于二叉链表存储的二叉树遍历操作的实现。(2)在试验的过程中应注意局部变量与全局变量的使用,否则很容易出错,还要注意if和while的用法,分清if与else的嵌套关系。(3)在试验的过程中我发现自己存在一些不足,例如不懂得检查错误,经常不理解编译时提示的错误是什么意思,写代码是有点粗心,一条语句后面经常漏掉分号,以后我会以大量的练习、操作来弥补自己的缺点,力求能熟练、迅速地写出一些基本的算法设计。
6、dl;for(inti=1;i<=n;i++){cin>>k;tree.create(k);}p=root;cout<<"中序遍历结果:";tree.inorder(p);cout<>m;for(i=1;i<=m;i++){cout<<"输入要查找的数据:";cin>>a;tree.seek(p,a);}tree.~nod
7、e();}实验结果:实验体会:(1)通过本次试验,我更好的掌握了二叉树的逻辑结构、二叉树的二叉链表存储结构以及基于二叉链表存储的二叉树遍历操作的实现。(2)在试验的过程中应注意局部变量与全局变量的使用,否则很容易出错,还要注意if和while的用法,分清if与else的嵌套关系。(3)在试验的过程中我发现自己存在一些不足,例如不懂得检查错误,经常不理解编译时提示的错误是什么意思,写代码是有点粗心,一条语句后面经常漏掉分号,以后我会以大量的练习、操作来弥补自己的缺点,力求能熟练、迅速地写出一些基本的算法设计。
此文档下载收益归作者所有