文档介绍:Forpersonaluseonlyinstudyandresearch;mercialuse学生实验报告学院:软件与通信工程学院课程名称:数据结构专业班级:软件105班姓名:杨先刚学号:0104028学生实验报告(4)学生姓名杨先刚学号0104028同组人:无实验项目二叉树■必修□选修□演示性实■验验证性实验□操作性实验□综合性实验实验地点H202实验仪器台号指导教师蒋娜实验日期及节次一、实验综述1、实验目的及要求实验4:树和二叉树实验要求:1、创建一棵二叉树,以二叉链表作存储结构,实现先根遍历算法2、创建一棵二叉树,实现先根遍历算法、中根遍历算法、后根遍历算法3、求给定二叉树的叶结点数、结点数、高度二、实验过程(实验步骤、记录、数据、分析)#include<iostream>usingnamespacestd;typedefstructBiTNode//结点结构{chardata;structBiTNode*lchild,*rchild;//左右孩子指针}BiTNode,*BiTree;voidvisit(char&e)//输出函数{ cout<<e;//以整型格式输出}intCreateBiTree(BiTree&T){ charch; ch=getchar();if(ch=='')T=NULL;else{if(!(T=(BiTNode*)malloc(sizeof(BiTNode))))exit(0);T->data=ch;//生成根结点CreateBiTree(T->lchild);//构造左子树CreateBiTree(T->rchild);//构造右子树}return1;}//CreateBiTreevoidPreorder(BiTreeT,void(*visit)(char&e)){//初始条件:二叉树T存在,Visit是对结点操作的应用函数//操作结果:先序递归遍历T,对每个结点调用函数Visit一次且仅一次if(T){visit(T->data);//访问结点Preorder(T->lchild,visit);//遍历左子树Preorder(T->rchild,visit);//遍历右子树}}voidInOrderTraverse(BiTreeT,void(*Visit)(char&e)){//初始条件:二叉树T存在,Visit是对结点操作的应用函数//操作结果:中序递归遍历T,对每个结点调用函数Visit一次且仅一次if(T){InOrderTraverse(T->lchild,Visit);//中序遍历左子树Visit(T->data);//访问根结点InOrderTraverse(T->rchild,Visit);//中序遍历右子树}}voidPostOrderTraverse(BiTreeT,void(*Visit)(char&e)){//初始条件:二叉树T存在,Visit是对结点操作的应用函数//操作结果:后序递归遍历T,对每个结点调用函数Visit一次且仅一次if(T)//T不空{PostOrderTraverse(T->lchild,Visit);//后序遍历左子树PostOrderTraverse(T->rchild,Visit);//后序遍历右子树Visit(T->data);//后访问根结点}}voidCoun