二叉树及其操作的实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

班级:数媒1101 学号:0305110125 课程名称:数据结构实验

实验名称:二叉树及其操作的实现

实验内容和目的:

内容:1. 创建二叉树;

2. 用递归方法实现二叉树的各种遍历。

目的:1.掌握二叉树的定义和存储表示,学会建立一棵特定二叉树的方法;

2.掌握二叉树的遍历算法(先序、中序、后序遍历算法)的思想,并学会遍

历算法的递归实现和非递归实现。

实验步骤:

1.首先定义二叉树的存储形式;

2.用CreateBiTree( )构造二叉链表表示的二叉树T;

3. 用PreOrder ( bitree *t )、InOrder ( bitree *t)、PostOrder ( bitree * t )这三个函数

对二叉树依次进行先序、中序、后序遍历,并输出遍历序列。

实验代码/文件描述:

#include "stdio.h"

#include "stdlib.h"

#define maxsize 64

#define null 0

typedef char datatype;

typedef struct node

{

datatype data;

struct node * lchild, * rchild;

} bitree;

bitree * bitr;

bitree *Q[maxsize];

bitree *CREATREE( )

{ char ch ; int front , rear ;

bitree *root , *s ;

root = null ; front = 1 ; rear = 0 ;

ch = getchar( ) ;

while ( ch != '#' )

{ s = null ;

if ( ch != '@' )

{ s =(bitree*) malloc(sizeof(bitree));

s->data = ch ; s->lchild = null ;s->rchild =null; }

rear ++; Q[rear] = s ;

if (rear == 1 ) root = s ;

else

{ if ( s && Q[front] )

if (rear%2==0 ) Q[front]->lchild = s ;

else Q[front]->rchild = s ;

if ( rear%2==1 ) front ++;

}

ch = getchar ( ) ;

}

return root ;

}

void PreOrder ( bitree *t )

{

if ( t != null )

{

printf("\t%c\n",t->data);

PreOrder ( t->lchild );

PreOrder ( t->rchild );

}

}

void InOrder ( bitree *t)

{

if ( t != NULL )

{

InOrder ( t->lchild );

printf("\t%c\n", t->data);

InOrder ( t->rchild );

}

}

void PostOrder ( bitree * t )

{

if ( t != NULL )

{

PostOrder ( t->lchild );

PostOrder ( t->rchild );

printf("\t%c\n",t->data);

}

}

void main()

{ bitree *p ;

p=(bitree*)malloc(sizeof(bitree)); printf("输入二叉树:\n");

p= CREATREE( );

printf("先序遍历:\n");

PreOrder (p);

printf("中序遍历:\n");

InOrder ( p);

printf("后序遍历:\n");

PostOrder (p);

free(p);

getch();

}

实验结果和分析:

结果:

分析:

1.通过键盘输入二叉树的结点,建立一个二叉树,利用递归的方法依次实现对

该二叉树的先序、中序、后序遍历,并输出遍历结果。

相关文档
最新文档