C 语言编程二叉树
实验名称:C语言编程二叉树
一、实验目的及要求
1.掌握二叉树的存储实现
2.掌握二叉树的遍历思想
3.掌握二叉树的常见算法的程序实现
二、实验内容
1.编写函数 ,输入字符序列 ,建立 二叉树的 二叉链表 。
2.编写函数 ,实现二叉树的中序递归遍历算法 。 (最好也能实现前缀和后
缀遍历算法 )
3.编写函数 ,实现二叉树的中序非递归遍历算法 。
4.编写函数 ,借助队列实现二叉树的层次遍历算法 。
5.编写函数 ,求二叉树的高度 。
6.编写函数 ,求二叉树的结点个数 。
7.编写函数 ,求二叉树的叶子个数 。
8.编写函数 ,交换二叉树每个结点的左子树和右子树 。
9.编写一个主函数 ,在主函数中设计一个简单的菜单 ,分别调试上述算法 。
三、实验结果
第 1 页
C 语言编程二叉树
第 2 页
C 语言编程二叉树
第 3 页
C 语言编程二叉树
四、实验总结
通过此实验 ,我 掌握 了二叉树的存储实现 ,掌握 了二叉树的遍历思想 ,
掌握 了二叉树的常见算法的程序实现 。
附录
#include
#include
#define MAXSIZE 100
typedef char DataType;
typedef struct BiTNode /* 二叉链表存储结构 */
{ DataType data;
struct BiTNode *lchild,*rchild;
}BiTree;
typedef BiTree* ElemType ; /* 栈中数据元素类型,栈中保存结点指针 */
typedef struct
{ ElemType data[MAXSIZE];
int top;
}SeqStack; /* 栈的类型定义,顺序栈 */
typedef struct
{ElemType queue[MAXSIZE];
int front,rear;
}SP;
SeqStack *initSeqStack() /* 初始化栈 */
第 4 页
C 语言编程二叉树
{ SeqStack *s; /* 首先建立栈空间,然后初始化栈顶指针 */
s=(SeqStack*)malloc(sizeof(SeqStack));
s->top=-1;
return s;}
int push(SeqStack *s,ElemType x)
{ if(s->top==MAXSIZE-1){ /* 栈满不能入栈 */
printf("栈满");
return 0;
}
s->top++;
s->data[s->top]=x;
return 1;}
void pop(SeqStack *s) /* 出栈,假设栈不空 */
{ s->top--; }
int empty(SeqStack *s)
{ if(s->top==-1) return 1;
else return 0;
}
ElemType top(SeqStack *s) /* 设栈不空 */
{ return (s->data[s->top]);
}
/* 递归算法创建二叉链表 */
BiTree *createBiTree()
{ DataType ch;
BiTree *T;
ch=getchar();
if(ch=='0') return