抽象类型实现二叉树实验报告1Word文档格式.doc

上传人:b****1 文档编号:13168550 上传时间:2022-10-07 格式:DOC 页数:56 大小:708KB
下载 相关 举报
抽象类型实现二叉树实验报告1Word文档格式.doc_第1页
第1页 / 共56页
抽象类型实现二叉树实验报告1Word文档格式.doc_第2页
第2页 / 共56页
抽象类型实现二叉树实验报告1Word文档格式.doc_第3页
第3页 / 共56页
抽象类型实现二叉树实验报告1Word文档格式.doc_第4页
第4页 / 共56页
抽象类型实现二叉树实验报告1Word文档格式.doc_第5页
第5页 / 共56页
点击查看更多>>
下载资源
资源描述

抽象类型实现二叉树实验报告1Word文档格式.doc

《抽象类型实现二叉树实验报告1Word文档格式.doc》由会员分享,可在线阅读,更多相关《抽象类型实现二叉树实验报告1Word文档格式.doc(56页珍藏版)》请在冰豆网上搜索。

抽象类型实现二叉树实验报告1Word文档格式.doc

若Dr≠φ,则Dr中存在惟一的元素xr,<

root,xr>

∈H,且存在D1上的关系HrH;

H={<root,xl>,<root,xr>,Hl,Hr};

(4)(Dl,{Hl})是一棵符合本定义的二叉树,称为根的左子树,(Dr,{Hr})是一棵符合本定 义的二叉树,称为根的右子树。

基本操作P:

InitBiTree(&

T);

操作结果:

构造空二叉树T。

DestroyBiTree(&

初始条件:

二叉树T存在

销毁二叉树T

CreateBiTree(&

T,definition);

definition给出二叉树T的定义

按definition构造二叉树T

ClearBiTree(&

将二叉树T清为空树

BiTreeEmpty(T);

若T为空二叉树,则返回TRUE,否则返回FALSE

BiTreeDepth(T);

返回T的深度

Root(T);

返回T的根

Value(T,e);

二叉树T存在,e是T中某个结点

返回e的值

Assign(T,&

e,value);

结点e赋值为value

Parent(T,e);

若e是T的非根节点,则返回它的双亲,否则返回“空”

LeftChild(T,e);

返回e的左孩子。

若e无左孩子,则返回“空”

RightChild(T,e);

返回e的右孩子。

若e无右孩子,则返回“空”

LeftSibling(T,e);

返回e的左兄弟。

若e是T的左孩子或无左兄弟,则返回“空”

RightSibling(T,e);

返回e的右兄弟。

若e是T的右孩子或无右兄弟,则返回“空”

InsertChild(T,p,LR,c);

二叉树T存在,p指向T中某个结点,LR为0或1,非空二叉树c与T不相交且右子 树为空。

根据LR为0或1,插入c为T中p所指向结点的左或右子树。

p所指结点的原有左或 右子树则成为c的右子树

DeleteChild(T,p,LR);

二叉树T存在,p指向T中某个结点,LR为0或1.

根据LR为0或1,删除T中P所指结点的左或右子树

PreOrderTraverse(T,Visit());

二叉树T存在,Visit是对结点操作的应用函数

先序遍历T,对每个结点调用函数Visit一次且仅一次。

一旦visit()失败,则操 作失败。

InOrderTraverse(T,Visit());

中序遍历T,对每个结点调用函数Visit一次且仅一次。

一旦visit()失败,则操 作失败

PostOrderTraverse(T,Visit());

后序遍历T,对每个结点调用函数Visit一次且仅一次。

一旦visit()失败,则操 作失败

LevelOrderTraverse(T,Visit());

层次遍历T,对每个结点调用函数Visit一次且仅一次。

}ADTBinaryTree

三、存储结构定义及各基本操作的实现

1.公用头文件base.h

//**************************Includes*****************************

#include"

stdio.h"

conio.h"

stdlib.h"

windows.h"

malloc.h"

math.h"

#define OK 1

#define TRUE 1

#define ERROR 0

#define FALSE 0

#define MAXSIZE 100 //最多结点数

typedef int Status;

typedef char TElemType;

//结点类型为字符型

//**************************其它操作********************************************

short wherex() //返回光标的x坐标

{

CONSOLE_SCREEN_BUFFER_INFOcsbinfo;

GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE),&

csbinfo);

returncsbinfo.dwCursorPosition.X;

}

short wherey() //返回光标的y坐标

returncsbinfo.dwCursorPosition.Y;

voidgotoxy(shortx,shorty) //移动光标到(x,y)坐标

COORDpoint={x,y};

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),point);

voidSetColor(unsignedshortTextColor=7)//设置字体颜色

{

unsignedBackGroundColor=0;

HANDLEhCon=GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleTextAttribute(hCon,TextColor|BackGroundColor);

void Print(unsignedx,unsignedy)//在(x,y)位置显示方框

SetColor(14);

gotoxy(x,y++);

printf("

╭──────────────╮"

);

││"

╰──────────────╯"

SetColor();

void ClearWindow(unsignedx1=50,unsignedy1=0,

unsignedx2=80,unsignedy2=10)

//将屏幕(x1,y1,x2,y2)区域清屏,并显示方框

unsigned i,j;

for(i=x1;

i<

x2;

i++)

for(j=y1;

j<

y2;

j++)

{

gotoxy(i,j);

printf("

"

}

Print(x1-2,y1);

void ClearLine(unsignedy=23)

//清除第y行与y+1行的字符,并使光标在行首,默认清除第23与24行

for(inti=0;

158;

i++)

gotoxy(i,y);

putchar('

'

gotoxy(0,wherey()-1);

void ClearAera(unsignedx=96,unsignedy=22)

//清除(0,y)-(x,y+1)区域的字符,并使光标移动到y

for(unsignedi=0;

i<

x;

gotoxy(i%(x/2),y+(i/48));

gotoxy(0,y);

//*************************************************************************

Status Visit(TElemTypee)//二叉树结点Visit函数,显示字符的值

printf("

%c"

e);

returnOK;

2.顺序存储结构

存储结构定义:

//*****************二叉树顺序存储结构**********************

/*在一棵具有n个结点的满二叉树中,从树根起,自上层到下层,

/*逐层从左到右给所有结点从1开始编号到n,非满二叉树补为满二叉树再编号,

/*存储到数组中(0号单元存储结点个数),空结点规定为'

&

'

*/

typedef TElemType *SqBiTree;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1