完整word版广东工业大学数据结构二叉树课程设计Word文档下载推荐.docx

上传人:b****3 文档编号:13525717 上传时间:2022-10-11 格式:DOCX 页数:25 大小:184.21KB
下载 相关 举报
完整word版广东工业大学数据结构二叉树课程设计Word文档下载推荐.docx_第1页
第1页 / 共25页
完整word版广东工业大学数据结构二叉树课程设计Word文档下载推荐.docx_第2页
第2页 / 共25页
完整word版广东工业大学数据结构二叉树课程设计Word文档下载推荐.docx_第3页
第3页 / 共25页
完整word版广东工业大学数据结构二叉树课程设计Word文档下载推荐.docx_第4页
第4页 / 共25页
完整word版广东工业大学数据结构二叉树课程设计Word文档下载推荐.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

完整word版广东工业大学数据结构二叉树课程设计Word文档下载推荐.docx

《完整word版广东工业大学数据结构二叉树课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《完整word版广东工业大学数据结构二叉树课程设计Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。

完整word版广东工业大学数据结构二叉树课程设计Word文档下载推荐.docx

三.实验仪器设备和材料

硬件:

PC机

软件:

VisualC++6.0

四.实验的内容

1.二叉树类型定义以及各基本操作的简要描述;

ADTBinaryTree{

数据对象D:

D是具有相同特性的数据元素的集合.

数据关系R:

若D=∅,则R=,称BinaryTree为空二叉树;

若D≠,则R={H},H是如下二元关系:

(1)在D中存在惟一的称为根的数据元素root,它在关系H下无前驱;

(2)若D-{root}≠∅,则存在D-{root}={D1,Dr},且D1∩Dr=∅;

(3)若D1≠∅,则D1中存在惟一的元素x1,<

root,x1>

∈H,且存在Dr上的关系Hr∈H;

H={<

,<

root,xr>

,H1,Hr};

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

基本操作P:

InitBiTree(&

T);

操作结果:

构造空二叉树T。

DestroyBiTree(&

初始条件:

二叉树T存在。

销毁二叉树T。

CreateBiTree(&

T,definition);

definition给出二叉树T的定义。

按definition构造二叉树T。

ClearBiTree(&

将二叉树T清为空树。

BiTreeEmpty(T);

若T为空二叉树,则返回TURE,否则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无左孩子或无左兄弟,则返回“空”。

RightSibling(T,e);

返回e的右兄弟。

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

}ADTBinaryTree

2.存储结构:

采用无头结点的链式存储结构实现

3.源代码:

头文件及存储结构:

#include<

stdio.h>

stdlib.h>

#defineTURE1

#defineFALSE0

#defineOK1

#defineERROR0

#defineOVERFLOW0

#defineMAXQSIZE100//最大队列长度

typedefcharTElemType;

typedefstructBiTNode//二叉树结构体

{

TElemTypedata;

structBiTNode*lchild,*rchild;

}BiTNode,*BiTree;

typedefBiTreeQElemType;

typedefstructQNode

{

QElemTypedata;

structQNode*next;

}QNode,*QueuePtr;

//结点结构体

typedefstruct

QueuePtrfront;

QueuePtrrear;

}LinkQueue;

//链队列结构体

算法设计:

intInitQueue(LinkQueue&

Q)//构造空队列

Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));

if(!

Q.front)//存储分配失败

exit(OVERFLOW);

Q.front->

next=NULL;

returnOK;

}

intEnQueue(LinkQueue&

Q,QElemTypee)//新元素入队尾

QueuePtrp;

p=(QueuePtr)malloc(sizeof(QNode));

p)//存储分配失败

exit(OVERFLOW);

p->

data=e;

Q.rear->

next=p;

Q.rear=p;

intDeQueue(LinkQueue&

Q,QElemType&

e)//删除队头元素

if(Q.front==Q.rear)//队列为空队

returnERROR;

p=Q.front->

next;

e=p->

data;

next=p->

if(Q.rear==p)//判断删除队头元素后,队列是否为空队

Q.rear=Q.front;

free(p);

intQueueEmpty(LinkQueueQ)//判断队列是否为空队

if(Q.front==Q.rear)

returnTURE;

else

returnFALSE;

}

intInitBiTree(BiTree&

T)//构造空二叉树

T=NULL;

intDestroyTree(BiTree&

T)//销毁二叉树

T)

DestroyTree(T->

lchild);

rchild);

free(T);

T=NULL;

returnOK;

voidCreateBiTree(BiTree&

T)//用先序遍历的方式构建二叉树,以‘@’表示空结点。

TElemTypech;

scanf("

%c"

&

ch);

if(ch=='

@'

{

if(!

(T=(BiTree)malloc(sizeof(BiTNode))))

exit(OVERFLOW);

//分配存储空间失败

T->

data=ch;

CreateBiTree(T->

//构造左子树

//构造右子树

}

intClearBiTree(BiTree&

T)//清空二叉树函数

ClearBiTree(T->

intBiTreeEmpty(BiTreeT)//判断二叉树是否为空

intBiTreeDepth(BiTreeT)//计算二叉树深度

intlcd,rcd;

return0;

lcd=BiTreeDepth(T->

rcd=BiTreeDepth(T->

return((lcd>

rcd?

lcd:

rcd)+1);

TElemTypeRoot(BiTreeT)//判断二叉树是否空,若非空返回其根

if(BiTreeEmpty(T))

returnNULL;

return(T->

data);

TElemTypeValue(BiTreeT,BiTreee)//返回e结点的值

returne->

intAssign(BiTreeT,BiTree&

e,TElemTypevalue)//将value的值给结点e

e->

data=value;

TElemTypeParent(BiTreeT,TElemTypee)

{//返回双亲

LinkQueueq;

QElemTypea;

if(T)

InitQueue(q);

EnQueue(q,T);

//树根入队列

while(!

QueueEmpty(q))//队不空

{

DeQueue(q,a);

//出队,队列元素赋给a

if(a->

lchild&

&

a->

lchild->

data==e||a->

rchild&

rchild->

data==e)//找到e

returna->

//返回双亲的值

else

{

if(a->

lchild)

EnQueue(q,a->

//入队列左孩子

rchild)

//入队列右孩子

}

}

returnNULL;

BiTreePoint(BiTreeT,TElemTypes)//返回二叉树T中指向元素值为S的结点指针

QueueEmpty(q))

DeQueue(q,a);

data==s)

returna;

EnQueue(q,a->

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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