数据结构课程实验(树和二叉树的建立和应用)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四 二叉树的建立和应用
1、实验目的
(1)熟练掌握树的基本概念、二叉树的基本操作及在链式存储结构上的实现;
(2)重点掌握二叉树的生成、遍历及求深度等算法;
(3)掌握运用递归方式描述算法及编写递归C 程序的方法,提高算法分析和程序设计能力。
2、实验内容
按照已知二叉树,从键盘读入节点字符,建立二叉树(ABD#G###CE##FH###)
;分别采用先序、中序、后序遍历该二叉树,分别输出遍历结果。 3、实验步骤
(1)仔细分析实验内容,给出其算法和流程图;
(2)用C 语言实现该算法;
(3)给出测试数据,并分析其结果;
(4)在实验报告册上写出实验过程。
4、测试数据
先序序列: ABDGCEFHjfkdkfakf
中序序列: DGBAECHF
后序序列: GDBEHFCA 5、结构定义 typedef struct BiTNode
{ char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
6、实验报告要求
实验报告要求书写整齐,步骤完整,实验报告格式如下:
1、[实验目的]
2、[实验设备]
3、[实验步骤]
4、[实验内容]
5、[实验结果(结论)]
G H
B C
D E F A
程序如下:
#include "stdio.h"
#include "string.h"
typedef char TElemType ;
typedef struct BiNode
{
TElemType data;
struct BiNode * lchild ,* rchild;
}BiNode ,*BiTree;
BiTree CreateBiTree(BiTree bt)
{ char ch;
B iTree h=NULL;
c h=getchar();
i f(ch=='#') bt=NULL;
e lse {
if((bt=(BiNode *)malloc(sizeof(BiNode)))==NULL) exit(-2);
bt->data=ch;
bt->lchild=CreateBiTree(h);
bt->rchild=CreateBiTree(h);
}
r eturn(bt);
}
void PreOrderTraverse(BiTree bt)
{if(bt)
{printf("%c",bt->data); PreOrderTraverse(bt->lchild); PreOrderTraverse(bt->rchild);
}
return;
}
void InOrderTraverse(BiTree bt) {if(bt)
{InOrderTraverse(bt->lchild); printf("%c",bt->data); InOrderTraverse(bt->rchild);
}
return;
}
void PostOrderTraverse(BiTree bt) {if(bt)
{PostOrderTraverse(bt->lchild); PostOrderTraverse(bt->rchild); printf("%c",bt->data);
}
return;
}
main()
{
BiTree T;
T=CreateBiTree(NULL);
printf("\nthe PreOrder is:"); PreOrderTraverse(T);
printf("\nthe InOrder is:"); InOrderTraverse(T);
printf("\nPostOrder is:"); PostOrderTraverse(T);
}