ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:42.70KB ,
资源ID:5453067      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5453067.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验3 二叉树的应用.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

实验3 二叉树的应用.docx

1、实验3 二叉树的应用实验五:二叉树的应用一、实验预备知识 1 树是一种非线性的结构,它具有递归特点。 2 二叉树有四种遍历方法,分别为:先根,后根、中根和层次。掌握四种遍历的规则。(每个结点都访问,并且只访问一次)二、实验目的1 掌握二叉树的逻辑结构特性,以及各种存储结构的特点及适用范围。2 掌握用指针类型描述、访问和处理二叉树的各种运算的实现算法。三、实验内容1 编写采用二叉链表形式存储的二叉树的创建算法。2 编写二叉树的先序、中序、后序遍历的递归算法、先序和中序的非递归算法和按层遍历的算法。 2 编写将一棵二叉树的所有左右子树进行交换的算法。3 编写统计二叉树中叶子结点的算法。4编写一个主

2、函数,将上面函数连在一起,构成一个完整的程序。5将实验源程序调试并运行。四、实验要求建立的二叉树为: #includeusing namespace std;typedef char datatype;typedef struct node datatype data; struct node *lchild,*rchild;bintnode;typedef bintnode *bintree;typedef struct stack bintree data100; int tag100; int top;seqstack;创建二叉树算法:void CreateBinTree(bintree

3、 *t) char ch; if(ch=getchar()=0) (*t)=NULL; else *t=new bintnode ; (*t)-data=ch; CreateBinTree(&(*t)-lchild); CreateBinTree(&(*t)-rchild); 前序遍历递归算法:void Preorder(bintree t) if(t) coutdatalchild); Preorder(t-rchild); 中序遍历递归算法:void Inorder(bintree t) if(t) Inorder(t-lchild); coutdatarchild); 后序遍历递归算法:

4、void Postorder(bintree t) if(t) Postorder(t-lchild); Postorder(t-rchild); coutdatadata+s-top=t;bintree Pop(seqstack *s) if(s-top!=-1) s-top-; return (s-datas-top+1); else return NULL;前序遍历非递归算法:void Preorder1(bintree t) seqstack s; =-1; while(t)|!=-1) while(t) coutdatalchild; if-1) t=Pop(&s); t=t-rch

5、ild; 中序遍历非递归算法:void Inorder1(bintree t) seqstack s; =-1; while(t!=NULL)|!=-1) while(t) Push(&s,t); t=t-lchild; if!=-1) t=Pop(&s); coutdatarchild; 层次遍历算法:void Levelorder(bintree t) bintree queue100; int front,rear; if(t=NULL) return; front=-1; rear=0; queuerear=t; while(front!=rear) front+; coutdatal

6、child!=NULL) rear+; queuerear=queuefront-lchild; if(queuefront-rchild!=NULL) rear+; queuerear=queuefront-rchild; 遍历叶子节点算法:void CountLeaf(bintree t) if(!t) return; if(!(t-lchild|t-rchild) coutdatalchild); CountLeaf(t-rchild);交换左右子树算法:void SwapBinTree(bintree t) bintree s; if(t) SwapBinTree(t-lchild);

7、 SwapBinTree(t-rchild); s=t-lchild; t-lchild=t-rchild; t-rchild=s; 主函数实现:void main() bintree root; cout*endl; cout请按前序遍历次序顺序读入所要生成的二叉树:; CreateBinTree(&root); cout*endl; cout*endl; cout递归实现前序遍历结果:; Preorder(root); coutendl; coutn递归实现中序遍历结果:; Inorder(root); coutendl; coutn递归实现后序遍历结果:; Postorder(root)

8、; coutendl; cout*endl; cout*endl; cout非递归实现前序遍历结果:; Preorder1(root); coutendl; coutn非递归实现中序遍历结果:; Inorder(root); coutendl; coutn层次遍历结果:; Levelorder(root); coutendl; coutn叶子结点为:; CountLeaf(root); coutendl; cout*endl; cout*endl; printf(交换左右子树后遍历如下:); coutendl; SwapBinTree(root); coutn递归实现前序遍历结果:; Preorder(root); coutendl; coutn递归实现中序遍历结果:; Inorder(root); coutendl; coutn递归实现后序遍历结果:; Postorder(root); coutendl; cout*endl;5、实验结果:

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2