实 验 报 告
课程名称 ﻩ 数据结构 ﻩ
实验项目 二叉树的建立与遍历
实验仪器 PC
系 别: 计算机科学与技术
班级\学号: 计科0902/200
姓 名: 高锋
日 期:
成 绩:
指导老师 : 张 仰 森
一、目的和要求:
1、熟练掌握二叉树的定义、性质和存储结构;
2、熟练掌握二叉树的三种遍历和线索化以及遍历算法的各种描述形式;
3、学会编写实现树的各种操作的算法。
二、实验题目: ﻫ二叉树的建立与遍历:掌握建立二叉树的方法,实现先序、中序、后序三种遍历(递归和非递归)算法;
三、源程序(递归和非递归遍历)
#include〈>
#include〈>
#define TRUE 1
#define FALSE 0
//树节点结构体
typedef struct TNode{
char data;
struct TNode *lc,*rc;
}*Tree;
//栈结构体
typedef struct Stack{
Tree *top,*base; //元素为树节点指针的指针!
int stacksize;
}stack;
//栈的初始化
void InitStack(stack &s)
{
// printf(”init\n");
=(Tree *)malloc(sizeof(TNode)*100);//初始化100个空间
if(!s。base)
{
printf("error!\n");
return;
}
=;
=0;
}
//压栈操作
void push(stack &s,Tree t)
{
*s.top = t;
// printf(”push %c\n",(*s.top)—>data);
++; //栈顶指针+1
s.stacksize++;
}
//出栈操作
Tree pop(stack &s)
{
// Tree *p;
if(==s.base) //判断是否为空栈
ﻩ {
ﻩ printf("stack empty error!\n");
return NULL;
ﻩﻩ}
s.stacksize--;
// p=s.top-1;
// printf("pop %c\n",(*p)->data);
return *(--s。top); //返回栈顶元素:树节点指针
}
//获得栈顶元素
Tree getTop(stack &s)
{
if(
北信-实验三-二叉树 来自淘豆网www.taodocs.com转载请标明出处.