教学要求掌握树的定义及基本术语掌握二叉树的定义

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
教学要求: 掌握树的定义及基本术语,掌握二叉树的定义、
性质和存储结构,熟练掌握二叉树的遍历方法及其 实现和线索二叉树的构造,掌握树,森林和二叉树 之间相互转换的方法,掌握哈夫曼树的定义和哈夫 曼算法,了解哈夫曼编码的方法。 教学重点与难点:
二叉树的存储结构,二叉树的遍历及线索二叉 树的构造,树、森林和二叉树之间的相互转换,哈 夫曼树的定义和哈夫曼算法。
(1) 在D中存在唯一的称为根的数据元素root,它在关 系H下没有前驱。
(2) 除root以外,D中每个结点在关系H下都有且仅有 一个前驱。
基本操作:
(1)InitTree(Tree): 将Tree初始化为一棵空树。 (2) DestoryTree(Tree): 销毁树Tree。 (3) CreateTree(Tree): 创建树Tree。 (4) TreeEmpty(Tree): 若Tree为空,则返回TRUE,否则返
(8) NextSibling(Tree,x): 树Tree存在,x是Tree中的某 个结点。若x不是其双亲的最后一个孩子结点,则返回x后面 的下一个兄弟结点,否则返回“空”。
基本操作:
(9) InsertChild(Tree,p,Child): 树Tree存在,p指向Tree 中某个结点,非空树Child与Tree不相交。将Child插入Tree中, 做p所指向结点的子树。
结点F,G为堂兄弟 结点A是结点F,G的祖先
森林(forest):
是m(m≥0)棵互 不相交的树的集合
F A root
B
C
D
E
F GH I J
KL
M
任何一棵非空树是一个二元组 Tree = (root,F)
其中:root 被称为根结点 F 被称为子树森林
4.树的抽象数据类型
数据对象D:一个集合,该集合中的所有元素具有相 同的特性。 数据关系R:若D为空集,则为空树。若D中仅含有 一个数据元素,则R为空集,否则R={H},H是如下 的二元关系:
第 六
6.1 树的定义与基本术语

6.2 二叉树

6.3 二叉树的遍历与线索化

6.4 树、森林和二叉树的关系

6.5 哈夫曼树及其应用

6.6 总结与提高

6.1 树的定义与基本术语
1.树的基本概念 2.树的图解表示法 3.树的相关术语 4.树的抽象数据类型
6.1 树的定义与基本术语
1.树的基本概念
例如:一棵树的逻辑结构图(6.1)为:
A
B
C
D
E
F GH I J
K
L
M
从图中可以看出它好象一棵倒栽的树。
2.树的图解表示法 1)倒置树结构(树形表示法) 2)文氏图表示法(嵌套集合形式) 图6.2 3)广义表形式(嵌套扩号表示法) 4)凹入表示法 图6.3
A
B
C
D
A
B
C
D
(A(B(D),C))
图6.2 文氏图表示法
(10) DeleteChild(Tree,p,i): 树Tree存在,p指向Tree中 某个结点,1≤i≤d,d为p所指向结点的度。删除Tree中p所指 向结点的第i棵子树。
(11) TraverseTree(Tree,Visit()): 树Tree存在,Visit() 是对结点进行访问的函数。按照某种次序对树Tree的每个结 点调用Visit()函数访问一次且最多一次。若Visit()失败, 则操作失败。
同构:对两棵树,通过对结点适当地重命名,就可以使 两棵树完全相等(结点对应相等,对应结点的相关关系 也像等),则称这两棵树同构。
我们常常借助人类家族树的术语,以便于直观理解结点 间的层次关系。
孩子结点:一个结点的直接后继称为该结点的孩子结点。如上 图的B、C是A的孩子。
双亲结点:一个结点的直接前驱称为该结点的双亲结点。上图 中A是B、C的双亲。 兄弟结点:同一双亲结点的孩子结点之间互称兄弟结点。上 图中的结点H、I、J互为兄弟结点。
树定义:是n(n≥0)个结点的有限集合T。当n=0时, 称为空树;当n>0时,该集合满足如下条件:
(1) 其中必有一个称为根(root)的特定结点,它没有 直接前驱,但有零个或多个直接后继。
(2) 其余n-1个结点可以划分成m(m≥0)个互不相交 的有限集T1,T2,T3,…,Tm,其中Ti又是一棵树, 称为根root的子树。每棵子树的根结点有且仅有一 个直接前驱,可有零个或多个直接后继。
堂兄弟:父亲是兄弟关系或堂兄关系的结点称为堂兄弟结点。 在图6.1中,结点E、G、H互为堂兄弟。
祖先结点:一个结点的祖先结点是指从根结点到该结点的路径 上的所有结点。如结点K的祖先结点是A、B、E。
子孙结点:一个结点的直接后继和间接后继称为该结点的子孙 结点。如结点D的子孙是H、I、J、M。 前辈:层号比该结点小的结点,都称为该结点的前辈。
回FALSE。 (5) Root(Tree): 返回树Tree的根。
(6) Parent(Tree,x): 树Tree存在,x是Tree中的某个结点。 若x为非根结点,则返回它的双亲,否则返回“空”。
(7) FirstChild(Tree,x): 树Tree存在,x是Tree中的某个 结点。若x为非叶子结点,则返回它的第一个孩子结点,否 则返回“空”。
广义表表示法
3.树的相关术语:
结点:包含一个数据元素及若干指向其它结点的分 支信息。
结点的度:一个结点的子树个数称为此结点的度。 叶结点:度为0的结点,即无后继的结点,也称为终端结点。 分支结点:度不为0的结点,也称为非终端结点。
结点的层次:从根结点开始定义,根结点的层次为1,根的 直接后继的层次为2,依此类推。
后辈:层号比该结点大的结点,都称为该结点的后辈。
叶子:K,L,F,G,M,I,J
结点A的度:3 结点B的度:2 结点M的度:0
结点A的孩子:B,C,D
结点B的孩子:E,F
B
A
结点I的双亲:D
结点L的双亲:E
C
D
树的度:3
树的深度:4
E
F GH
I
J
KБайду номын сангаас
L
M
结点A的层次:1 结点M的层次:4
结点B,C,D为兄弟 结点K,L为兄弟
结点的层次编号:将树中的结点按从上层到下层、同层从左 到右的次序排成一个线性序列,依次给它们编以连续的自然 数。
树的度:树中所有结点的度的最大值。
树的高度(深度):树中所有结点的层次的最大值。
有序树:在树T中,如果各子树Ti之间是有先后次序的, 则称为有序树。
森林:m(m≥0)棵互不相交的树的集合。将一棵非空树 的根结点删去,树就变成一个森林;反之,给森林增加 一个统一的根结点,森林就变成一棵树。
相关文档
最新文档