《2022年数据结构——二叉树基本算法实用 .pdf》由会员分享,可在线阅读,更多相关《2022年数据结构——二叉树基本算法实用 .pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第十九小组实验报告数据结构实验报告实验四二叉树存储结构的应用实验内容:二叉树各种算法的实现专业班级:网络工程专业1002 班组长:贾鑫(2010100234)组员:贾鹏飞(2010100237)邓桐桐(2010100229)名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 6 页 -第十九小组实验报告2012 年 4 月 27 日实验报告实验类型:综合实验室:软件实验室二一、实验名称二叉树存储结构的应用二、实验目的和要求:1.掌握二叉树的遍历思想及二叉树的存储实现。2.掌握二叉树的基本操作:建立二叉树、二叉树的遍历3.掌握二叉树的常见算法的程序实现4.实验报告中要写出测试数据、错误
2、分析以及收获三、实验内容1.编程实现建立一棵二叉树,然后对其进行先序、中序和后序遍历(按先序顺序输入二叉树,若当前位置不存在结点则输入#)2.求二叉树的高度、二叉树的叶子个数,实现左右结点交换 3.在主函数中设计一个简单的菜单,分别调试上述算法四、设计思路名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 6 页 -第十九小组实验报告五、代码实现#include#include#include#define NULL(void*)0)typedef struct TNode char data;struct TNode*lchild,*rchild;TNode,*Tree;Tree
3、Creat()/按 先 序 序 列 建 立 二 叉 树Tree T;char ch=getchar();if(ch=#)T=NULL;else T=(TNode*)malloc(sizeof(TNode);T-data=ch;T-lchild=Creat();T-rchild=Creat();return T;void First(Tree T)/先 序 遍 历 递 归 TNode*p=T;if(p!=NULL)printf(%c,p-data);First(p-lchild);First(p-rchild);void Middle(Tree T)/中 序 遍 历 递 归main()函数Cre
4、at()函数First()函数Middle()函数Last()函数Leaf()函数Depth()函数Change()函数贾鑫贾鹏飞邓桐桐名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 6 页 -第十九小组实验报告 TNode*p=T;if(p!=NULL)Middle(p-lchild);printf(%c,p-data);Middle(p-rchild);void Last(Tree T)/后 序 遍 历 递 归 TNode*p=T;if(p!=NULL)Last(p-lchild);Last(p-rchild);printf(%c,p-data);int Leaf(Tree
5、T)/叶 子 结 点 个 数TNode*p=T;if(p!=NULL)if(p-lchild=NULL)&(p-rchild=NULL)return 1;else return(Leaf(p-lchild)+Leaf(p-rchild);else return 0;int Depth(Tree T)/树 的 深 度TNode*p=T;int l,r;if(!p)return 0;else l=Depth(p-lchild);r=Depth(p-rchild);if(lr)return l+1;else return r+1;void Change(Tree T)/结 点 交 换TNode*p=
6、T;if(p!=NULL)p=T-lchild;T-lchild=T-rchild;T-rchild=p;Change(T-lchild);Change(T-rchild);名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 6 页 -第十九小组实验报告 int main()Tree T;int t,i,l,d;printf(ttt*创 建 二 叉 树*n);printf(请 输 入 树 的 各 元 素,用#表 示 空 结 点:n);T=Creat();printf(ttt*二 叉 树 算 法*n);printf(ttt n);printf(ttt#1.先 序 遍 历#n);prin
7、tf(ttt#2.中 序 遍 历#n);printf(ttt#3.后 序 遍 历#n);printf(ttt#4.叶 子 个 数#n);printf(ttt#5.二 叉 树 深 度#n);printf(ttt#6.结 点 交 换#n);printf(ttt#0.退 出 程 序#n);printf(tttn);for(i=0;i+)printf(请 您 选 择(0-6):);scanf(%d,&t);if(t6)printf(输 入 出 错!请 重 输:n);else switch(t)case 1:printf(先序 遍 历:);First(T);printf(n);break;case 2:
8、printf(中序 遍 历:);Middle(T);printf(n);break;case 3:printf(后序 遍 历:);Last(T);printf(n);break;case 4:printf(叶子 结 点 个 数:);l=Leaf(T);printf(%d 个 n,l);break;case 5:printf(二叉 树 深 度:);d=Depth(T);printf(%dn,d);break;case 6:printf(各结 点 已 交 换);Change(T);printf(n,d);break;case 0:printf(tt*谢 谢 使 用,再 见!*n);return 0;break;六、实验 结 果名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 6 页 -第十九小组实验报告七、实验小结在我小组共同努力下,实现了二叉树的建立,各种遍历等算法。同时也掌握了二叉树遍历思想和二叉树的存储实现。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 6 页 -