下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年政治能力模拟试卷带答案
- 2026年电气自动化工程师职业能力评估模拟试题(含答案)
- DB37T 6077.1-2026 洄游型大西洋鲑第1部分:苗种培育技术规范
- 从0到1破局 2026-2028年杭州市隐私计算与安全A轮融资运营方案
- 2026宏观视野:既有建筑绿色化改造的产业全景与中长期趋势
- 2026无线键盘产业链解构:上游材料突破与中游技术跃迁
- 2026年东北元宇宙内容生态内部创业孵化运营方案
- 2026年材料工程师中级职称评审考试塑料与橡胶成型工艺模拟试卷及答案
- 神经递质在神经系统炎症反应中的免疫调节机制
- 2026年猜成语趣味测试题及答案
- 2026年钢铁企业行业分析报告及未来五至十年行业发展报告
- 新教科版科学四年级上册2-5《口腔里的消化》教学课件
- 2025年上半年CATTI三级笔译实务真题详解(含参考译文)
- 实验室危险化学品应急处置预案
- 团体标准 T-BJZMXH 505-2025 松属植物修剪造型技术规范
- 2026年扫黑除恶常态化试题及答案
- 2026年全国烟花爆竹经营单位安全管理人员考试题库含答案
- 2026年河南省中考真题道德与法治试卷和答案
- 病因考试试题及答案
- 生产车间员工绩效考核实施细则
- 人教版2025-2026学年七年级地理上册期中测试卷及答案(两套题)
评论
0/150
提交评论