二叉树与森林
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
子孙结点:以某结点为根的子树中任一结点
都称为该结点的子孙;
A
B
C
D
E F GH I J
KL
© Zhihai WANG, 2015
M
18
树的基本术语 (6-4)
结点的层次:从根结点到该结点所经过的路 径长度加1; 树的深度:树中叶子结点具有的最大层次数;
A
B
C
D
E F GH I J
KL
M
© Zhihai WANG, 2015
© Zhihai WANG, 2015
7
树的定义
树(tree)是n (n ≥ 0)个结点的有限集。 当n = 0时称为空树;在任意一棵非 空树中,有且仅有一个结点称为根
(root)结点,其余的结点可分为m (m ≥0)个互不相交的有限集T1, T2, …, Tm, 其中每一个集合又称为 一棵树,并且称为根的子树
LeftChild(T, cur_e) //求当前结点的最左孩子 RightSibling(T, cur_e) //求当前结点的右兄弟 TreeEmpty(T) //判定树是否为空树 TreeDepth(T) //求树的深度 TraverseTree( T, Visit() ) //遍历
© Zhihai WANG, 2015
(subtree)。同理,每一棵子树又可 以分为若干个互不相交的有限集。
© Zhihai WANG, 2015
8
抽象数据类型树的定义
ADT Tree{ 数据对象 D:D是具有相同特性的数据元素的集合。 数据关系 R:若D为空集,则称为空树;否则: (1) 在D中存在唯一的称为根的数据元素root; (2) 当n>1时,其余结点可分为m (m>0)个互不相交
的有限集T1, T2, …, Tm,其中每一棵子集本身又是一 棵符合本定义的树,称为根root的子树。
基本操作:基本类,查找类,插入类,删除类等。
} ADT Tree
© Zhihai WANG, 2015
9
与查找有关的基本操作
Root(T) // 求树的根结点 Value(T, cur_e) // 求当前结点的元素值 Parent(T, cur_e) //求当前结点的双亲结点
数据结构(A) (课程号: 80L129Q)
王志海 办公室: 第9教学楼北502室 北京交通大学计算机与信息技术学院
教学大纲:教学内容
树的基本概念; 二叉树的性质和存储结构; 遍历二叉树; 线索二叉树; 树的存储结构和遍历; 哈夫曼树及其应用。
© Zhihai WANG, 2015
4
教学大纲:教学重点源自文库
19
树的基本术语 (6-5)
有序树:如果将树中结点的各子树看成从左 至右是有次序的(即不能互换),则称该树 为有序树;
第一个孩子:在有序树中,最左边的子树的 根称为第一个孩子;
最后一个孩子:最右边
A
的子树的根称为 最后一个孩子.
B
C
D
E F GH I J
KL
© Zhihai WANG, 2015
M
© Zhihai WANG, 2015
11
与删除有关的基本操作
ClearTree(&T)
// 将树清空
DestroyTree(&T)
// 销毁树的结构
DeleteChild(&T, &p, i) // 删除结点p的第i 棵子树
© Zhihai WANG, 2015
12
例如:
A
B
E
F
C
D
G
H
I
J
K
20
树的基本术语 (6-6)
森林是m(m ≥0)棵互不相交的树的集合。对树 中每个结点而言,其子树的集合即为森林。
任何一棵非空树是一个二元组Tree=(root, F)
构成;
H
孩子结点:结点的子树的根
称为该结点的孩子结点;
双亲结点:相应地,该结点
称为孩子的双亲结点;
D IJ
M
© Zhihai WANG, 2015
17
树的基本术语 (6-3)
兄弟:具有同一父结点的子结点互称兄弟;
堂兄弟:其双亲在同一层的结点互为堂兄弟;
祖先结点:从根到该结点所经分支上的所有 结点;
© Zhihai WANG, 2015
14
树型结构 vs. 线性结构
线性结构
树型结构
第一个数据元素 (无前驱)
最后一个数据元素 (无后继)
其它数据元素 (一个前驱、
一个后继)
根结点 (无前驱)
多个叶子结点 (无后继)
其它数据元素 (一个前驱、
多个后继)
© Zhihai WANG, 2015
15
树的基本术语 (6-1)
L
M
A( B(E, F(K, L)), C(G), D(H, I, J(M)) )
树根 T1
T2
T3
© Zhihai WANG, 2015
13
几种类型的树
有向树:
D
➢ 有确定的根;
➢树根和子树根之间为有 H
向关系。
IJ M
有序树: 子树之间存在确定的次序关系。 无序树:子树之间不存在确定的次序关系。
10
与插入有关的基本操作
InitTree(&T) // 初始化置空树 CreateTree(&T, definition) // 按定义构造树 Assign(T, cur_e, value) // 给当前结点赋值 InsertChild(&T, &p, i, c) // 将以c为根的树插入为结 点p的第i棵子树
二叉树的结构特点,二叉树各种存储结 构的特点及适用范围;
按各种次序遍历二叉树的递归和非递归 算法;(难点)
二叉树的线索化,在中序线索树上找给 定结点的前驱和后继的方法;
树的各种存储结构及其特点;编写树的 各种运算的算法;
建立最优二叉树和哈夫曼编码的方法。
© Zhihai WANG, 2015
5
本章主要内容
树的类型定义 二叉树的类型定义 二叉树的性质 二叉树的存储结构 二叉树的遍历 线索二叉树 树和森林 树和森林的遍历 哈夫曼树与哈夫曼编码
© Zhihai WANG, 2015
6
本章主要内容
树的类型定义 二叉树的类型定义 二叉树的性质 二叉树的存储结构 二叉树的遍历 线索二叉树 树和森林 树和森林的遍历 哈夫曼树与哈夫曼编码
树的结点:包含一个数据元
素及若干个指向其子树的分
支;
H
结点的度:一个结点拥有的
子树数目(分支数);
D IJ
M
树的度:一棵树上所有结点度的最大值; 叶子结点(终端结点): 度为零的结点; 分支结点(非终端结点): 度大于零的结点;
© Zhihai WANG, 2015
16
树的基本术语 (6-2)
(从根到结点的)路径:由从 根到该结点所经分支和结点