《《数据结构》实验报告(普本)-(2)1.doc》由会员分享,可在线阅读,更多相关《《数据结构》实验报告(普本)-(2)1.doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验三课程名称:数据结构班级:完成日期:姓名:学号:指导教师:实验名称:二叉树的应用实验序号:实验成绩:一、实验目的及要求掌握二叉树的动态存储结构-二叉链表,掌握二叉树的三种遍历方法,会运用三种遍历的方法求解有关问题。二、实验环境硬件:计算机 软件:Microsoft Visual C+三、实验内容1. 以二叉链表作存储结构,建立一棵二叉树;2. 输出其先序、中序、后序遍历序列;3. 统计其叶子结点数;4. 求出它的深度。四、调试过程及实验结果五、总结通过本次试验,我了解了二叉树的建立与运行过程,在这次试验中也遇到不少困难,经过老师和同学的指导,最终完成本次试验,受益匪浅。六、附录(源程序清单
2、)#include using namespace std;/定义树的结构typedef struct _binTree char data;_binTree *lNode,*rNode;binTree;/创建二叉树void createT(binTree *&rootNode,binTree *tempNode)if(rootNode=NULL)rootNode=tempNode;return;elseif(rootNode-data tempNode-data)createT(rootNode-lNode,tempNode);else if(rootNode-data data)creat
3、eT(rootNode-rNode,tempNode);/已创建的数void printT(binTree *rootNode)if(rootNode=NULL)return ;elseprintT(rootNode-lNode);coutdatarNode);/先序遍历二叉树void preTraverse(binTree *rootNode)if(rootNode=NULL)return ;elsecoutdatalNode);printT(rootNode-rNode);/中序遍历二叉树void midTraverse(binTree *rootNode)if(rootNode=NULL
4、)return ;elseprintT(rootNode-lNode);coutdatarNode);/后序遍历二叉树void lastTraverse(binTree *rootNode)if(rootNode=NULL)return ;elseprintT(rootNode-lNode);printT(rootNode-rNode);coutdatalNode)+nodeTotal(rootNode-rNode);/计算二叉树的深度int treeDepth(binTree *rootNode)if(rootNode=NULL)return -1;elseint lH=treeDepth(
5、rootNode-lNode);int rH=treeDepth(rootNode-rNode);if(lHrH)return lH+1;return rH+1;/计算叶子结点的个数int leafTotal(binTree *rootNode)if(rootNode=NULL)return 0;elseif(rootNode-lNode=NULL & rootNode-rNode=NULL)return 1;elseint lH=leafTotal(rootNode-lNode);int rH=leafTotal(rootNode-rNode);return rH+lH;int main()
6、binTree *rootNode,*tNode;rootNode=NULL;tNode=NULL;char ch;cout按照下面给出的顺序进行输入构建二叉树:endlF D B E A C J H K G I Lch;while(ch!=0)tNode=new binTree;tNode-data=ch;tNode-lNode=NULL;tNode-rNode=NULL;createT(rootNode,tNode);cinch;if(rootNode=NULL)coutTree is NULL.endl;elsecout正常输出二叉树的各节点数据:;printT(rootNode);coutendl;cout先序遍历二叉树的各节点数据:;preTraverse(rootNode);coutendl;cout中序遍历二叉树的各节点数据:;midTraverse(rootNode);coutendl;cout后序遍历二叉树的各节点数据:;lastTraverse(rootNode);coutendl;cout二叉树的深度为:treeDepth(rootNode)endl;cout二叉树的结点的个数为:nodeTotal(rootNode)endl;cout二叉树的叶子结点的个数为:leafTotal(rootNode)endl;return 0;6