二叉树的建立与遍历的代码_第1页
二叉树的建立与遍历的代码_第2页
二叉树的建立与遍历的代码_第3页
二叉树的建立与遍历的代码_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include stdio.h#include string.h#define NULL 0 typedef struct BiTNode char data;struct BiTNode *lchild,*rchild; BiTNode,*BiTree;BiTree Create(BiTree T) char ch;ch=getchar(); if(ch=#) T=NULL;elseif(!(T=(BiTNode *)malloc(sizeof(BiTNode) printf(Error!);T-data=ch;T-lchild=Create(T-lchild); T-rchild=Cre

2、ate(T-rchild); return T;void Preorder(BiTree T) if(T) printf(%c,T-data);Preorder(T-lchild); Preorder(T-rchild);int Sumleaf(BiTree T)int sum=0,m,n;if(T) if(!T-lchild)&(!T-rchild) sum+;m=Sumleaf(T-lchild); sum+=m;n=Sumleaf(T-rchild); sum+=n; return sum;void zhongxu(BiTree T) if(T) zhongxu(T-lchild); p

3、rintf(%c,T-data);zhongxu(T-rchild);void houxu(BiTree T)if(T)houxu(T-lchild); houxu(T-rchild); printf(%c,T-data);int Depth(BiTree T)int dep=0,depl,depr;if(!T) dep=0;elsedepl=Depth(T-lchild); depr=Depth(T-rchild); dep=1+(depldepr?depl:depr);return dep;main()BiTree T;int sum,dep;T=Create(T);Preorder(T)

4、;printf(n);zhongxu(T);printf(n);houxu(T);printf(n); sum=Sumleaf(T); printf(%d,sum); dep=Depth(T); printf(n%d,dep);实验报告 实验名称:遍历二叉树 实验目的: 掌握二叉树链式存储的类型定义及实现。 掌握二叉树链式存储的各类基本运算方法 掌握二叉树用不同方法标识所对应的不同输入形式。 掌握二叉树中各个重要性质在解决实际问题中的应用。 掌握二叉树的分析方法,解决方法,从而提高实际编程能力及程序调试能力等。 实验要求:建立一个二叉树并对其进行遍历 实验内容1、创建二叉树 2、用递归方法实现

5、二叉树的各种遍历 实验仪器与设备计算机、VC+6.0程序实验原理 建立一个二叉树,利用递归的方法实现对该二叉树的遍历,并输出遍历结果。 实验程序及结果#includestdlib.h #includestdio.h #includemalloc.h#include stdafx.h #include #include typedef char DataType;typedef struct NodeDataType data;struct Node *LChild; struct Node *RChild;BiTNode,*BiTree;/*声明二叉树的二叉链表结点的结构*/void Crea

6、teBiTree(BiTree *bt)/*利用“扩展先序遍历序列”创建二叉链表*/char ch;ch=getchar();if(ch=.) *bt=NULL;else *bt=(BiTree)malloc(sizeof(BiTNode);/* 申请空间*/(*bt)-data=ch;CreateBiTree(&(*bt)-LChild); CreateBiTree(&(*bt)-RChild);return;/*采用递归算法,如果是空树,返回 0;如果只有一个结点,返回 1;否则为左 右子树的叶子结点数之和*/int leaf(BiTree bt)int LeafCount;if(bt=N

7、ULL)LeafCount =0;else if(bt-LChild=NULL)&(bt-RChild=NULL) LeafCount=1;else LeafCount=leaf(bt-LChild)+leaf(bt-RChild);return LeafCount;void PrintTree(BiTree bt,int nLayer)/* 按竖向树状打印二叉树*/if(bt=NULL)return; PrintTree(bt-RChild,nLayer+1); for(int i=0;idata); PrintTree(bt-LChild,nLayer+1);void main()/*调用

8、主函数连接其他函数,构成完整的程序*/BiTree bt;pri ntf(请输入二叉树的序列:n ”);CreateBiTree(&bt);prin tf(该二叉树的叶子结点个数为:dn ,leaf(bt);printf(该二叉树的形状为:n);int nLayer=0;PrintTree(bt,nLayer);请输入数据: AB.DF.G.C.E.H.结果:实验总结: 通过学习数据结构,发现数据结构包括线性结构、树形结构、图状结构或网状结 构。线性结构包括线性表、栈、队列、串、数组、广义表等,栈和队列是操作受 限的线性表,串的数据对象约束为字符集,数组和广义表是对线性表的扩展:表 中的数据元素本身也是一个数据结构。除了线性表以外,栈是重点,因为栈和递 归紧密相连,递归是程序设计中很重要的一种工具。树状结构中的重点自然是二 叉树和哈弗曼树了。对于二叉树的很多操作都是基于对二叉树的遍历,掌握了如 何遍历,很多问题也就迎刃而解了,比如对二叉树结点的查找访问、统计二叉树 中叶

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论