树和二叉树 ppt课件

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ClearBiTree(&T) 初始条件:二叉树T存在 操作结果:将二叉树T清为空树
二叉树的基本操作
InitBiTree(&T); 操作结果:构造空二叉树T
DestroyBiTree(&T); 初始条件:二叉树T存在 操作结果:销毁二叉树T
CreatBiTree(&T,definitio源自文库); 初始条件:definition给出二叉树T的定义 操作结果:按definition树构造二叉树T
Assign(T,cur_e,value); 初始条件:树T存在,cur_e是T中某个结点 操作结果:结点cur_e赋值 为value
Parent(T,cur_e); 初始条件:树T存在,cur_e是T中某个结点 操作结果:若cur_e是T的非根结点,则返回它的双亲,
否则函数值为“空”
LeftChild(T,cur_e); 初始条件:树T存在,cur_e是T中某个结点 操作结果:若cur_e是T的非叶子结点,则返回它的最左
第六章 树和二叉树
➢ 6.1树的定义和基本术语 ➢ 6.2二叉树 ➢ 6.3遍历二叉树和线索二叉树 ➢ 6.4树和森林 ➢ 6.6赫夫曼树及其应用
6.1 树的定义和基本术语
树(Tree):是n(n>=0)个结点的有限集。 在任意一个非空树中: ⑴有且仅有一个特定的称为根(Root)的结点; ⑵当n>=1时,其余结点可分为m(m>0)个互不相交的有
限集T1,T2,…,Tm,其中Ti是一棵树,称为根结点子树 例:(a)是只有一个根结点的树.(b)是有13个结点的树,A
是根,其余结点分成三个互不相交的子集: T1=(B,E,F,K,L);T2=(C,G);T3=(D,H,I,J,M).T1,T2,T都 是根A的子树,本身也是一棵树
A
A
T1
(a)只有根结
TreeEmpty(T); 初始条件:树T存在 操作结果:若T为空树,则返回TRUE,否则FALSE
TreeDepth(T); 初始条件:树T存在 操作结果:返回T的深度
Root(T); 初始条件:树T 存在 操作结果:返回T的根
Value(T,cur_e); 初始条件:树T存在,cur_e是T中某个结点 操作结果:返回cur_e的值
孩子,否则返回“空”
RightSibling(T,cur_e); 初始条件:树T存在,cur_e是T中某个结点 操作结果:若cur_e有右兄弟,则返回它的右兄弟,否则
函数值为 “空”
InsertChild(&T,&P,i,c); 初始条件:树T存在,P指向T中某个结点,1<=i<=P所
指结点的度+1,非空树c 与T不相交 操作结果:插入c为T中p指结点第i棵子树
森林:是m(m>=0)棵互不相交的树的集合
6.2 二叉树
定义:是一棵或为空树,或树中每个结点的度数 <=2有序树
特点:⑴每个结点至多有两棵子树 ⑵ 二叉树的子树有左右之分,其次序不能 任意互换
二叉树的五中基本形态:
Φ
(a) (b)
(c)
(d)
(e)
(a)空 二叉树 (b)仅有根结点的二叉树 (c )右子树为空的二叉树 (d)左,右子树均非空的 二叉树 (e)左子树为空的二叉树
(2)若D-{root}=φ,则存在D-{root}的一个划分D1 D2,…, Dn(m>0),对任意j=k(1<=j,k<=m)有Dj∩ Dk=φ,且对 任意的i(1<=i<=m),唯一存在数据元素xi ∈Di,有 <root, xi>∈H;
⑶对应于D-{root}的划分,H-{<root, xi>,…,<root, xn>} 有唯一的一个划分H1, H2,…, Hn(m>0),对任意的 j=k(1<=j,k<=m)有Hj ∩Hk=φ,且对任意i(1<=i<=m), Hi是Di上的二元关系,(Di,{Hi})是一棵符合本定义的树, 称为根root的子树。
树的基本操作
基本操作P: InitTree(&T); 操作结果:构造空树T
DestroyTree(&T); 初始条件:树T存在 操作结果:销毁树T
CreatTree(&T,definition); 初始条件:definition给出树T的定义 操作结果:按definition树构造树T
ClearTree(&T) 初始条件:数T存在 操作结果:将树T清为空树
DeleteChild(&T,&P,i); 初始条件:树T存在,p指向T中某个结点,1<=i<=P指结点
的度 操作结果:删除T中P所指结点的第i棵子树
TraverseTree(T,Visit()); 初始条件:树T存在,Visit是对结点操作的应用函数 操作结果:按某种次序树对T的每个结点调用函数visit()一
点的树
B
C T2
D
T3
E
F
G
H
I
J
K
L
M
(b)一般的树 A是根,T1,T2,T3是三棵子树
抽象类型树的定义
ADT Tree { 数据对象D:D是具有相同特性的数据元素的集合. 数据关系R: 若D为空集,则称为空树; 若D仅含一个数据元素,则R为空集,否则R={H}, H是如下二元关系: (1)在D中存在唯一的称为根的数据元素root,它在 关系H下无前驱;
次且至多一次,一旦visit()失败,则操作失败 }ADT Tree
树的逻辑表示形式 (a)树型结构 (b)嵌套集合 (c)广义表 (d)凹入表(目录表示法)
D
B
E
FC
A
(b)
A
BC
D
E
F
(a)
(A(B(E),C(F),D) ( C)
(d) 凹入表
A B E C F
D
树的基本术语
度:结点拥有的子树数称为结点的度 叶子(终端结点):度为0的结点 非终端结点(分支结点):度不为0的结点 树的度是树内各结点的度的最大值 结点的子树的根称为该结点的孩子 该结点称为孩子的双亲(parent) 深度:树中结点的最大层次
例下图,D是A的子树T3的根,则D是A的孩子, 而A则是D的双亲,同一个双亲的孩子之间互称兄弟。 结点的层次从根开始定义起,根为第一层,根的孩子为第二层。
A
T1 B
C T2
T3 D
E
F
G
H
I
J
K
L
M
有序树:将树中结点的各子树看成从左到右是有 次序的(不能互换),称该树为有序树。
无序树:将树中结点的各子树看成从左到右是无 次序的(不能互换),称该树为无序树。
相关文档
最新文档