数据结构课程实验(树和二叉树的建立和应用)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

}

相关文档
最新文档