[计算机软件及应用]数据结构zmz_5二叉树

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
插入类:
InitTree(&T) 操作结果:构造空树T
CreateTree(&T, definition) 初始条件: definition给出树的定义 操作结果:按definition构造树T
Assign(T, cur_e, value) 初始条件:树T已存在,cur_e是T中结点 操作结果:结点cur_e赋值为value
Value(T, cur_e) 初始条件:树T已存在,cur_e是T中结点 操作结果:返回cur_e 的值
Parent(T, cur_e) 初始条件:树T已存在,cur_e是T中结点 操作结果:若cur_e是T中非根结点,返回其双亲;否则,返回空
树的抽象数据类型定义 基本操作:
查找类:
LeftChild(T, cur_e) 初始条件:树T已存在,cur_e是T中结点 操作结果:若cur_e是T中非叶子结点,返回其最左孩子;否则,返回空
ClearTree(&T) 初始条件:树T 已存在 操作结果:将树T 清为空树
DeleteChild(&T, &p,i) 初始条件:树T存在,p指向T中结点,1≤i ≤ p指结点度 操作结果:删除T中p指结点的第i棵子树
树的基本术语
结点(node)——表示树中的元素,以及构造 元素之间关系的指针
特点: 树中至少有一个结点——根 树的定义是递归定义的,各子树也满足上面定义。
线性结构
第一个数据元素 (无前驱)
最后一个数据元素 (无后继)
其它数据元素 (一个前驱、
一个后继)
树型结构 根结点
(无前驱)
多个叶子结点 (无后继)
其它数据元素 (一个前驱、
多个后继)
只有根结点的树
A
子树
有子树的树
A

B
C
D
E
F GH I J
K
L
M
叶叶子子
树的抽象数据类型定义
ADT Tree
{ 数据对象D: D是具有相同特性的数据元素的集合 数据关系R: 若D为空集,则称为空树
否则: (1) 在D中存在唯一的称为根的数据元素root; (2) 当n>1时,其余结点可分为m (m>0)个互不相交的
有限集T1, T2, …, Tm,其中每一棵子集本身又是 一棵符合本定义的树,称为根root的子树
第六章 树和二叉树(上)
主讲:郑梦泽
请安静
信息工程学院
§6.1
树的定义和基本术语
请安静
Data Structure
A.线性结构
线性表 栈
数 据 结 构 的
1.数据的逻辑
队列
结构 一对多(B.1非:线性n结)树构的逻树辑形结结构构?? 图形结构

个 主 要
2、数据的存储结构 A 顺序存储 B 链式存储
树的基本术语
森林(forest)——m(m0)棵互不相交的树的 集合
无序树——子树之间不存在确定的次序关系 有序树——各子树从左至右有严格的次序,
不能互换,最左边的节点称为第一个孩子, 最右边的节点称为最后一个孩子
任何一棵非空树是一个二元组
Tree = (root,F) 其中:root 被称为根结点
RightChild(T, cur_e) 初始条件:树T已存在,cur_e是T中结点 操作结果:若cur_e是T中非叶子结点,返回其最右孩子;否则,返回空
TraverseTree(T, visit()) 初始条件:树T已存在 操作结果:按某种次序对T 的每个元素调用函数visit()
树的抽象数据类型定义 基本操作:
兄弟(sibling)——同一双亲的孩子 祖先——从根到该结点所经分支上的所有结
点 子孙(后裔)——一个节点所有子树上的节
点 节点的层次(level)——从根结点算起,根为
第一层,它的孩子为第二层…… 堂兄弟——同一层的结点 深度(depth)——树中结点的最大层次数,
又称高度
F 被称为子树森林
树的表示
• 图形表示法
B
EF
K
L
• 嵌套集合表示法
• 广义表表示法
ຫໍສະໝຸດ Baidu
• 凹入表示法
A
C
D
G HI J
M
树的表示
B
EF
K
L
A
C
D
G HI J
M
图型表示法
A
EB
KL F
D
HI
MJ
C
G
嵌套集合表示法
树的表示
A
B
C
D
E F G HI J
K
L
M
图型表示法
(A(B(E(k,L),F),C(G),D(H(M),I,J)))
InsertChild(&T, &p,i,c) 初始条件:树T存在,p指向T中结点,1≤i ≤ p指结点度+1,非空树c与T不相交 操作结果:将以c为根的树插入为T中p指结点的第i棵子树
树的抽象数据类型定义
删除类:
DestroyTree(&T) 初始条件:树T 已存在 操作结果:销毁树T
基本操作:
括号(广义表)表示法
结点的度(degree)——结点拥有的子树数 树的度——一棵树中最大的结点度数 叶子(leaf)——度为0的结点,终端结点 分支结点——度不为0的结点,非终端结点 孩子(child)——结点子树的根称为该结点的
孩子 双亲(parents)——孩子结点的上层结点叫该
结点的双亲
树的基本术语


3、对数据的操作:检索、排序、插入、删除、修改
树的实例
五子棋游戏
……..
……..
…... …... …... …...
树的实例
UNIX文件系统结构
bin
math ds sw
/ (root)
人类的族谱
各种社会关系
lib
user
etc
各类分类编码
编译程序的语法树
yIinnternteato中的xDieNS(域名系统)
基本操作: 查找类操作 插入类操作 删除类操作
} ADT Tree
树的抽象数据类型定义 基本操作:
查找类: TreeEmpty(T)
初始条件:树T已存在 操作结果:空树,返回 TRUE;否则 FALSE
TreeDepth(T) 初始条件:树T已存在 操作结果:返回 T 的深度
Root(T) 初始条件:树T已存在 操作结果:返回T的根
Queue.cpp Stack.cpp Tree.cpp
树的定义
树是一类重要的非线性数据结构,是以分支关 系定义的层次结构
定义:树(tree)是n(n≥0)个结点的有限集,其中: n=0,称为空树 有且仅有一个特殊的结点,称为树的根(root) 当n>1时,其余结点可分为m(m>0)个互不相交的子集 T1,T2,……Tm,其中每一个集合本身又是一棵树,称为根的 子树(subtree)
相关文档
最新文档