欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    数据结构实验四树与二叉树.docx

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

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

    数据结构实验四树与二叉树.docx

    数据结构实验四 树与二叉树数据结构实验四 树与二叉树 班级 学号 姓名 分数 一、实验目的: 1、掌握二叉树的定义、性质及存储方式,各种遍历算法。 2、掌握这种存储结构的构造算法以及基于每一种结构上的算法设计 3、初步掌握算法分析方法并对已设计出的算法进行分析,给出相应的结果。 二、实验要求: 采用二叉树链表作为存储结构,完成二叉树的建立,先序、中序和后序以及按层次遍历的操作,求所有叶子及结点总数的操作。 三、实验内容及分析: 1、分析、理解程序。 2、调试程序,设计一棵二叉树,输入完全二叉树的先序序列,用#代表虚结点,如ABD#CE#F#,建立二叉树,求出先序、中序和后序以及按层次遍历序列,求所有叶子及结点总数。 四、程序的调试及运行结果 先序遍历中序遍历后序遍历树的深度及叶子树层次遍历五、程序代码 #include"stdio.h" #include"stdlib.h" #include"string.h" #define Max 20 /结点的最大个数 typedef struct node char data; struct node *lchild,*rchild; BinTNode; /自定义二叉树的结点类型 typedef BinTNode *BinTree; /定义二叉树的指针 int NodeNum,leaf; /NodeNum为结点数,leaf为叶子数 /=基于先序遍历算法创建二叉树= /=要求输入先序序列,其中加入虚结点"#"以示空指针的位置= BinTree CreatBinTree(void) BinTree T; char ch; if(ch=getchar)='#') return(NULL); /读入#,返回空指针 else T= (BinTNode *)malloc(sizeof(BinTNode); /生成结点 T->data=ch; T->lchild=CreatBinTree; /构造左子树 T->rchild=CreatBinTree; /构造右子树 return(T); /=NLR 先序遍历= void Preorder(BinTree T) if(T) printf("%c",T->data); /访问结点 Preorder(T->lchild); /先序遍历左子树 Preorder(T->rchild); /先序遍历右子树 /=LNR 中序遍历= void Inorder(BinTree T) if(T) Inorder(T->lchild); /中序遍历左子树 printf("%c",T->data); /访问结点 Inorder(T->rchild); /中序遍历右子树 /=LRN 后序遍历= void Postorder(BinTree T) if(T) Postorder(T->lchild); /后序遍历左子树 Postorder(T->rchild); /后序遍历右子树 printf("%c",T->data); /访问结点 /=采用后序遍历求二叉树的深度、结点数及叶子数的递归算法= int TreeDepth(BinTree T) int hl,hr,max; if(T) hl=TreeDepth(T->lchild); /求左深度 hr=TreeDepth(T->rchild); /求右深度 max=hl>hr? hl:hr; /取左右深度的最大值 NodeNum=NodeNum+1; /求结点数 if(hl=0&&hr=0) leaf=leaf+1; /若左右深度为0,即为叶子。 return(max+1); else return(0); /=利用"先进先出"队列,按层次遍历二叉树= void Levelorder(BinTree T) int front=0,rear=1; BinTNode *cqMax,*p; /定义结点的指针数组cq cq1=T; /根入队 while(front!=rear) front=(front+1)%NodeNum; p=cqfront; /出队 printf("%c",p->data); /出队,输出结点的值 if(p->lchild!=NULL) rear=(rear+1)%NodeNum; cqrear=p->lchild; /左子树入队 if(p->rchild!=NULL) rear=(rear+1)%NodeNum; cqrear=p->rchild; /右子树入队 /=数叶子节点个数= int countleaf(BinTree T) int hl,hr; if(T) hl=countleaf(T->lchild); hr=countleaf(T->rchild); if(hl=0&&hr=0) /若左右深度为0,即为叶子。 return(1); else return hl+hr; else return 0; /=主函数= void main BinTree root; char i; int depth; printf("n"); printf("Creat Bin_Tree; Input preorder:"); /输入完全二叉树的先序序列, / 用#代表虚结点,如ABD#CE#F# root=CreatBinTree; /创建二叉树,返回根结点 do /从菜单中选择遍历方式,输入序号。 printf("t* select *n"); printf("t1: Preorder Traversaln"); printf("t2: Iorder Traversaln"); printf("t3: Postorder traversaln"); printf("t4: PostTreeDepth,Node number,Leaf numbern"); printf("t5: Level Depthn"); /按层次遍历之前,先选择4,求出该树的结点数。 printf("t0: Exitn"); printf("t*n"); fflush(stdin); scanf("%c",&i); /输入菜单序号 switch (i-'0') case 1: printf("Print Bin_tree Preorder: "); Preorder(root); /先序遍历 break; case 2: printf("Print Bin_Tree Inorder: "); Inorder(root); /中序遍历 break; case 3: printf("Print Bin_Tree Postorder: "); Postorder(root); /后序遍历 break; case 4: depth=TreeDepth(root); /求树的深度及叶子数 printf("BinTree Depth=%d BinTree Node number=%d",depth,NodeNum); printf(" BinTree Leaf number=%d",countleaf(root); break; case 5: printf("LevePrint Bin_Tree: "); Levelorder(root); /按层次遍历 break; default: exit(1); printf("n"); while(i!=0);

    注意事项

    本文(数据结构实验四树与二叉树.docx)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开