《数据结构》实验报告
班级:
学号:
姓名:
实验四 二叉树的基本操作
实验环境:Visual C++ 实验目的:
1、掌握二叉树的二叉链式存储结构; 2、掌握二叉树的建立,遍历等操作。
实验内容:
通过完全前序序列创建一棵二叉树,完成如下功能: 1) 输出二叉树的前序遍历序列; 2) 输出二叉树的中序遍历序列; 3) 输出二叉树的后序遍历序列; 4) 统计二叉树的结点总数; 5) 统计二叉树中叶子结点的个数;
实验提示:
//二叉树的二叉链式存储表示 typedef char TElemType; typedef struct BiTNode{ TElemType data;
struct BiTNode *lchild,*rchild; }BiTNode,*BiTree;
一、程序源代码
#include
#include
#define MAXSIZE 30
typedef char ElemType;
typedef struct TNode *BiTree;
struct TNode {
char data;
BiTree lchild;
BiTree rchild; };
int IsEmpty_BiTree(BiTree *T) {
if(*T == NULL)
return 1;
else
return 0;
}
void Create_BiTree(BiTree *T){
char ch;
ch = getchar();
//当输入的是\时,认为该子树为空
if(ch == '#')
*T = NULL;
//创建树结点
else{
*T = (BiTree)malloc(sizeof(struct TNode));
(*T)->data = ch; //生成树结点
//生成左子树
Create_BiTree(&(*T)->lchild);
//生成右子树
Create_BiTree(&(*T)->rchild);
} }
void TraverseBiTree(BiTree T) { //先序遍历
if(T == NULL)
return;
else {
printf(\
TraverseBiTree(T->lchild);
TraverseBiTree(T->rchild);
} }
void InOrderBiTree(BiTree T) {
if(NULL == T)
return;
else {
InOrderBiTree(T->lchild);
printf(\
InOrderBiTree(T->rchild);
} }
void PostOrderBiTree(BiTree T) {
if(NULL == T)
return;
else {
//中序遍历