- 23
- 0
- 约1.68千字
- 约 5页
- 2016-08-23 发布于重庆
- 举报
实验四树和二叉树的建立和应用
实验四 二叉树的建立和应用
1实验目的
(1)熟练掌握树的基本概念、二叉树的基本操作及在链式存储结构上的实现;
(2)重点掌握二叉树的生成、遍历及求深度等算法;
(3)掌握运用递归方式描述算法及编写递归C程序的方法,提高算法分析和程序设计能力。
2实验内容
从键盘读入字符,建立ABD#G###CE##FH###)
;分别采用先序、中序、后序遍历该二叉树,分别输出遍历结果。
3实验步骤
(1)仔细分析实验内容,给出其算法和流程图;
()用C语言实现该算法;
()给出测试数据,并分析其结果;
()在实验报告册上写出实验过程。测试数据 ABDGCEFHjfkdkfakf
中序序列: DGBAECHF
后序序列: GDBEHFCA
5、结构定义
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
6、实验报告要求
实验报告要求书写整齐,步骤完整,实验报告格式如下:
1、[实验目的]
2、[实验设备]
3、[实验步骤]
4、[实验内容]
5、[实验结果(结论)]
#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;
BiTree h=NULL;
ch=getchar();
if(ch==#) bt=NULL;
else {
if((bt=(BiNode *)malloc(sizeof(BiNode)))==NULL)
exit(-2);
bt-data=ch;
bt-lchild=CreateBiTree(h);
bt-rchild=CreateBiTree(h);
}
return(bt);
}
void PreOrderTraverse(BiTree bt)
{if(bt)
{
printf(%c,bt-data);
PreOrderTraverse(bt-lchild);
PreOrderTraverse(bt-rchild);
}
}
void InOrderTraverse(BiTree bt)
{ if(bt)
{
InOrderTraverse(bt-lchild);
printf(%c,bt-data);
InOrderTraverse(bt-rchild);
}
}
void PostOrderTraverse(BiTree bt)
{
if(bt)
{
PostOrderTraverse(bt-lchild);
PostOrderTraverse(bt-rchild);
printf(%c,bt-data);
}
}
main()
{
BiTree T;
T=CreateBiTree(NULL);
printf(\nthe PreOrder is:);
PreOrderTraverse(T);
printf(\nthe InOrder is:);
InOrderTraverse(T);
printf(\nPostOrder is:);
PostOrderTraverse(T);
}
A
D E F
B C
G H
原创力文档

文档评论(0)