欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    二叉树的基本操作技巧.doc

    • 资源ID:12020385       资源大小:42KB        全文页数:14页
    • 资源格式: DOC        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    二叉树的基本操作技巧.doc

    cout«"请选择"<<e ndl;/二叉树的基本操作/定义结点#i nclude <iostream.h> typedef struct node char data;struct node *lchild, *rchild; Bi nTNode;typedef Bin TNode *Bi nTree; / void CreateB in Tree(Bi nTree & T);void PreOrder(Bi nTree T);void In Order(B in Tree T);void PostOrder(BinTree T);int on echild(Bi nTree T);int leafs(B in Tree T);int twochild(B in Tree T);void tran slevel(B in Treeb);定义二叉树/先序创建二叉树/先序遍历二叉树/中序遍历二叉树/后序遍历二叉树/求度为1的结点的个数/求叶子结点的个数/度为2的结点的个数/层序遍历二叉树void mai n()int n;Bin Tree T;char ch1,ch2;coutvv"欢迎进入二叉树测试程序的基本操作"<<endl;ch仁'y'while(ch1='y'|ch1='Y')cout<<"1 建立二叉树 n"cout<<"2 先序遍历 n"cout<<"3 中序遍历 n"cout<<"4 后序遍历 n"cout<<"5 单孩子结点数n"cout<<"6 双孩子结点数n"cout<<"7 叶子结点数n"cout<<"8 层序遍历 n"cout«"X 退出 n"cin> >ch2;switch(ch2)case '1':coutvv"请输入按先序建立二叉树的结点序列:n"CreateBi nTree(T);cout«e ndl;break;cout«"二叉树的先序遍历序列:n"case 2:PreOrder(T);cout«e ndl;break;case 3:coutvv"二叉树的中序遍历序列:In Order(T);cout«e ndl;break;case '4':coutvv"二叉树的后序遍历序列:PostOrder(T);coutvve ndl;break;case '5':coutvv"二叉树的单孩子结点数:n=on echild(T);cout< vnvven dl;coutvve ndl;break;n"n"n"case '6':n=twochild(T);cout< <n<<en dl;cout«e ndl;break;case 7':cout«"二叉树的叶子结点数:n"n=leafs(T);cout< <n<<en dl;cout«e ndl;break;case 8:cout«"二叉树的层序遍历序列:n"tran slevel(T);cout«e ndl;break;case 'x':case 'X':ch1='x'break;void CreateBi nTree(Bi nTree &T)char ch;cin> >ch;if(ch='0') T=NULL;elseT=(Bi nTNode *)new Bi nTNode;T->data=ch;CreateBi nTree(T->lchild );CreateBi nTree(T->rchild ); void In Order(B in Tree T)if(T)In Order(T->lchild );cout<<T->data;InOrder(T->rchild);void PostOrder(B in Tree T)if(T)PostOrder(T->lchild );PostOrder(T->rchild ); cout<<T->data; void PreOrder(B in Tree T)if(T)cout<<T->data;PreOrder(T->lchild );PreOrder(T->rchild );q.r=q.r+1;/队尾指针后移/层序遍历二叉树/采用一个队列q,先将二叉树的根结点入队列,然后退队列,输出该结 点,若它有左子树,便将左子树根结点入队列,若它有右子树,便将右子 树根结点入队列,如此直到队列空为止。/因为队列的特点是先进先出,从而达到按层序遍历的目的。#defi ne MAXLEN 100void tran slevel(B in Treeb)struct nodeBin Tree vecMAXLEN;int f, r;q; /定义队列q,f表示队头指针,r队尾指针q.f=0;/置队列为空队列q.r=0;if(b!=NULL) cout<< b->data<<""while(q.fvq.r)/ 队列不为空b=q.vecq.f;/队头出队列q.f=q.f+1;if(b->lchild!=NULL)/输出左孩子,并入队列cout« b->lchild->data<<""q.vecq.r=b->lchild;q.r=q.r+1;if(b->rchild!=NULL)/输出右孩子,并入队列cout« b->rchild->data<<""q.vecq.r=b->rchild;q.r=q.r+1;inton echild(B in Tree T)求度为1的结点的个数if(T=NULL) retur n 0;&&elseif(T->lchild=NULLT->rchild!=NULL|T->lchild!=NULL && T->rchild=NULL) retur n (on echild(T->lchild)+on echild(T->rchild)+1);elsereturn (on echild(T->lchild)+on echild(T->rchild); int leafs(Bi nTree T)int nu m1, nu m2;if(T=NULL) retur n 0;else if(T->lchild=NULL &&T->rchild =NULL) retur n 1;elsenum1=leafs(T->lchild);nu m2=leafs(T->rchild );retur n nu m1+ num2;int twochild(Bi nTree T)int numO=O,nu ml, num2;if(T=NULL) retur n 0;else if(T->lchild!=NULL && T->rchild!=NULL) num 0=1;nu m仁twochild(T->lchild);nu m2=twochild(T->rchild);retur n num0+nu m1+ num2;

    注意事项

    本文(二叉树的基本操作技巧.doc)为本站会员(scccc)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开