- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二叉树数据类型
数据结构课程设计报告
题目: 二叉树抽象数据结构
学 院 ___计算机学院
专 业 ___ ____
年级班别 ___ _ _
学 号 ___
学生姓名 _ ______
指导教师 ___ __ _
成 绩 ____
2009 年 6 月
一、题目
采用字符类型为元素信息,用顺序存储结构和链式存储结构,实现二叉树抽象数据类型。
ADT BiTree{
数据对象D:D是具有相同特性的数据元素的集合。
数据关系R:
若D为空集,则称为空二叉树;
若D仅含一个数据元素,则R为空集,否则R = {H}, H是如下二元关系:
在D中存在唯一的称为根的数据元素root,它在关系H下无前驱;
若D – {root} ≠ Φ,则存在D – {root} 的一个划分Dl Dr ,Dl∩Dr =Φ;
若Dl ≠ Φ,则Dl 中存在惟一的数据元素xl , root, xl ∈ H,且存在Dl 上的关系Hl H;若Dr ≠ Φ,则Dr 中存在惟一的数据元素xr , root, xr ∈ H,且存在Dr 上的关系Hr H;
(Dl,{ Hl、})是一棵符合本定义的二叉树,称为根root的左子树;
(Dr,{ Hr、})是一棵符合本定义的二叉树,称为根root的右子树。
基本操作P:
InitBitree(T);
操作结果:构造空二叉树。
CreateBitree(T);
初始条件:二叉树存在。
操作结果:按输入格式构造二叉树。
DestroyBitree(T);
初始条件:二叉树存在。
操作结果:销毁二叉树T。
ClearBitree(T);
初始条件:二叉树存在。
操作结果:将二叉树T清为空树。
BitreeEmpty(T);
初始条件:二叉树存在。
操作结果:若T为空二叉树,则返回TURE,否则FALSE。
BitreeDepth(T);
初始条件:二叉树存在。
操作结果:返回T的深度。
Root(T);
初始条件:二叉树存在。
操作结果:返回T的根。
Value(T, e);
初始条件:二叉树存在,e是T中某个结点。
操作结果:返回结点e的值。
Assign(T, e, value);
初始条件:二叉树存在,e是T中某个结点。
操作结果:结点e赋值为value 。
Parent(T, e);
初始条件:二叉树存在,e是T中某个结点。
操作结果:若e是T的非根结点,则返回它的双亲,否则返回“空”。
LeftChild(T, e);
初始条件:二叉树存在,e是T中某个结点。
操作结果:返回e的左孩子。若e无左孩子,则返回“空”。
RightChild(T, e);
初始条件:二叉树存在,e是T中某个结点。
操作结果:返回e的右孩子。若e无右孩子,则返回“空”。
PreOrder(T);
初始条件:二叉树存在。
操作结果:先序遍历T,按顺序输出每个结点。
InOrder(T);
初始条件:二叉树存在。
操作结果:中序遍历T,按顺序输出每个结点。
PostOrder(T);
初始条件:二叉树存在。
操作结果:后序遍历T,按顺序输出每个结点。
LevelOrder(T);
初始条件:二叉树存在。
操作结果:按层遍历T,按顺序输出每个结点。
} ADT BiTree
二、存储结构定义
公用头文件dso.h:
#include iostream.h
#include stdlib.h
#include string.h //字符串操作
#include math.h //数学
#include memory.h //内存操作文件
#include time.h //系统时间
#include queue.h //队列
using namespace std;
#define TURE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define MAXLEN 30
#define ElemType char
#define Status i
文档评论(0)