预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

PAGE5实验报告实验名称:对二叉树的操作。实验内容:1、按中序遍历结果从小到大的顺序建立一棵含有n个结点的二叉树,采用二叉链表存储;2、中序、前序、后序改二叉链表;3、输入一个数据,访问任一结点进行查找,如果有则返回“查找成功。”,没有则返回“查找不成功。”4、设计一个析构函数,释放结点空间。实验代码:#include<iostream.h>classnode{private:intdata;classnode*left;classnode*right;voidRelease(classnode*a);public:voidcreate(inta);voidinorder(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=NULL;if(root==NULL)root=s;else{p=root;while(!flag)if(x<p->data)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<<q->data<<"";inorder(q->right);}}voidnode::preorder(zzm){if(m==NULL)return;else{cout<<m->data<<"";preorder(m->left);preorder(m->right);}}voidnode::postorder(zzn){if(n==NULL)return;else{postorder(n->left);postorder(n->right);cout<<n->data<<"";}}voidnode::seek(classnode*l,intk){if(l==NULL)cout<<"查找失败,不存在该数据。"<<endl;elseif(l->data==k)cout<<"查找成功。"<<endl;elseif(k<l->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<<"请输入各结点数据:"<<endl;for(inti=1;i<=n;i++){cin>>k;tree.create(k);}p=root;cout<<"中序遍历结果:";tree.inorder(p);cout<<endl;cout<<"前序遍历结果:";tree.preorder(p);cout<<endl;cout<<"后序遍历结果:";tree.postorder(p);cout<<endl;cout<<"输入要查找的数据个数:";cin>>m;for(i=1;i<=m;i++){cou