第四章_树
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.树 1.树
左儿子-兄弟表示法: 左儿子 兄弟表示法: 兄弟表示法
第一棵子树根 结点的地址 数据域 下一个亲兄弟 结点的地址
A A
∧
B
C
D B
L
E
F
G
∧
H L
C
D
∧
I
∧
E
∧
∧
F
∧
G
∧
H
∧
度数 K = 3 的树
物理与电子学院物理与电子学院-数据结构
∧
I
∧ 6
1.树 1.树
树的遍历(访问树中的每一个节点) 树的遍历(访问树中的每一个节点) 找出目录usr包含的所有目录和文件? usr包含的所有目录和文件 找出目录usr包含的所有目录和文件? 先序遍历
度数 K = 3 的树
A 用数组表 0 A 示左图的 1 B B C D 树
2 3 4 C D L E F G H I 1 4 6 7 -1 -1 -1 9 -1 -1 2 5 -1 8 3 -1 -1 -1 -1 0 0 0 1 1 2 3 3 7
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
设度为 1 的结点数为 n1,树枝的总数为 B n则:B = n-1=n0+n1+n2-1; A 又 B = n1+2×n2; +2× 原命题得证。 原命题得证。 L
E F
C
物理与电子学院物理与电子学院-数据结构
13
2.二叉树 2.二叉树
满二叉树: 满二叉树 每层结点数 最多 L B P E A C F •完全二叉树 完全二叉树: 完全二叉树 从满二叉树最底层从 右向左依次去掉 若干结点 L D B E A C F D
A B C D E F G H I
2 4 6 8 10 0 0 0 0 0
3 5 7 9 0 0 0 0 0 0
H
I
L
7 8 9
应用范围: 应用范围:
10 L
适用于完全二叉树,且结点个数已知。 适用于完全二叉树,且结点个数已知。
物理与电子学院物理与电子学院-数据结构 17
2.二叉树 2.二叉树
二叉树的链接存储
I
H
9
应用范围:适用于二叉树上的结点个数已知, 应用范围:适用于二叉树上的结点个数已知,或不 支持动态存储分配的高级语言。 支持动态存储分配的高级语言。
物理与电子学院物理与电子学院-数据结构 16
2.二叉树 2.二叉树
完全二叉树
data left right
0
A B D E F C G
1 2 3 4 5 6
物理与电子学院物理与电子学院-数据结构 15
2.二叉树 2.二叉树
二叉树的顺序存储
A B C F G D data left
0 1 2 A B C D E F G H I L 1 9 5 6 -1 -1 8 -1 -1 -1
right
-1 2 3 -1 -1 -1 7 -1 -1 4
L E
3 4 5 6 7 8
L
E
F
G
H
5 6
I
7 8 9
-1 表示空 节点:空指针域 节点:空指针域太 多达( 多,多达 K -1 )× × n + 1 个。 改进: 改进:结点中设立 度数域 指针域 度数域,指针域依 度数定。 度数定。但操作麻 烦。 采用左儿子、 采用左儿子、兄 弟表示法。 弟表示法。
5
物理与电子学院物理与电子学院-数据结构
利用性质 1 ,将第 1 层至第 k 层的最多的 结点数进行相加: 结点数进行相加: 1+2+22+ ………+2k-2+2k-1+2k=2k+1-1 +2
物理与电子学院物理与电子学院-数据结构
12
2.二叉树 2.二叉树
性质3 性质3:二叉树的叶子结点数 n0 等于度 为 2 的结点数 n2 + 1 证:
例子
A B D F E G ∧ F ∧ ∧ G ∧ C B ∧ ∧ D /\ A
C ∧
E
物理与电子学院物理与电子学院-数据结构
19
2.二叉树 2.二叉树
代表根节点, 代表左子树, 代表右子树。 设 N 代表根节点,L 代表左子树,R 代表右子树。 a. 前序(或先序):如果二叉树为空,则操作为空:否则访问根结点;前序遍历左子树; 前序(或先序):如果二叉树为空,则操作为空:否则访问根结点;前序遍历左子树; ):如果二叉树为空 前序遍历右子树。记为: 前序遍历右子树。记为:NLR。 。 b. 中序: 中序: 如果二叉树为空,则操作为空:否则中序遍历左子树;访问根结点; 如果二叉树为空,则操作为空:否则中序遍历左子树;访问根结点; 中序遍历右子树。记为: 中序遍历右子树。记为:LNR。 。 c. 后序: 后序: A 如果二叉树为空,则操作为空:否则后序遍历左子树; 如果二叉树为空,则操作为空:否则后序遍历左子树;后序遍历右子 树;访问根结点。记为:LRN。 访问根结点。记为: 。 前序: 、 、 、 、 前序:A、L、B、E、 L B E W X
20
2.二叉树 2.二叉树
A L B E W W X X B L E A C W X D A
L B E
C D
C
D
Baidu Nhomakorabea
前序: 、 、 、 、 、 、 、 前序:A、L、B、E、C、D、W、X 后序: 、 、 、 、 、 、 、 后序:B、E、L、X、W、D、C、A
物理与电子学院物理与电子学院-数据结构
中序: 、 、 、 、 中序:B、L、E、A、C 、W、X、D 、 、
物理与电子学院物理与电子学院-数据结构
二 叉 树 遍 历
A
C D
C、D、W、X 、 、 、 中序: 、 、 、 、 中序:B、L、E、A、 C、W、X、D 、 、 、 后序: 、 、 、 、 后序:B、E、L、X、 W、D、C、A 、 、 、
首次遇到 第2次遇到 次遇到 末次遇到
B
L E W
C D
X
L B E F
证:
时成立, ik = 1 时成立,设 k = i-1 时成立 则当 k = i 时 层上至多有2 在二叉树的第 i 层上至多有2i-1-1 * 2 = 2i-1 个 结点
物理与电子学院物理与电子学院-数据结构 11
2.二叉树 2.二叉树
性质2: 二叉树至多有2 性质 :高度为 k 的二叉树至多有 k+1- 1 个结点 证:
Q R S U V W X P Q R S U 性质4: 性质 :具有 n 个结点的完全二叉树高度为 log2n 和完全二叉树的定义: 证:根据性质 2 和完全二叉树的定义:设其高度为 k 2k-1< n <= 2k+1 -1;2k < n + 1 <= 2k+1;2k <= n < 2k+1 ; 原命题得证。 故:k <= log2n < k+1 ; 原命题得证。
第四章 树
1.树 1.树 2.二叉树 2.二叉树 3.二叉查找树 3.二叉查找树 4.平衡二叉查找树 AVL树 平衡二叉查找树( 4.平衡二叉查找树(AVL树) 5.伸展树 5.伸展树 6.B树 6.B树
物理与电子学院物理与电子学院-数据结构
2
1.树 1.树
数据对象D: 数据对象D
D是具有相同特性的数据元素的集合。 是具有相同特性的数据元素的集合。
21
2.二叉树 2.二叉树
表达式树
树叶是操作数, 树叶是操作数,分支节点是操作符
前缀表达式 中缀表达式 后缀表达式
物理与电子学院物理与电子学院-数据结构
前序: 前序:++a*bc*+*defg 中序: 中序:(a+(b*c))+(((d*e)+f)*g) 后序: 后序:abc*+de*f+g*+
22
数据操作
物理与电子学院物理与电子学院-数据结构 3
1.树 1.树
树: 结点的度 结点的度:该结点的子树数目 树的度: 树的度:树中各结点度数的最大值 A 树枝): 边(树枝): ( A(B(L,E),C(F),D(G(I),H)) 路径: 路径: B C D 叶子(树叶) 分支节点: 叶子(树叶)、分支节点: 儿子、兄弟结点: 父、儿子、兄弟结点: L E F G H 祖先结点: 祖先结点:从根结点到该结点的路径上所有 结点 森林: 森林:m=3 I 深度:根为0, 深度:根为0, 依次往下数 树叶的高为0 高:树叶的高为0 B C D 有序树:所有结点的儿子结点具有确定次序, 具有确定次序 有序树:所有结点的儿子结点具有确定次序, 否则为无序树 否则为无序树 L E F G H 森林: 森林: m >= 0 棵互不相交树的集合 I
数据关系R 数据关系R:
若D为空集,则称为空树; 为空集,则称为空树; 否则: 否则: 中存在唯一的称为根的数据元素root, (1) 在D中存在唯一的称为根的数据元素root, n>1时 其余结点可分为m (m>0)个互 (2) 当n>1时,其余结点可分为m (m>0)个互 不相交的有限集T1, 不相交的有限集T1, T2, …, Tm, 其中每一 , 个子集本身又是一棵符合本定义的树, 个子集本身又是一棵符合本定义的树, 称为根root的子树。 root的子树 称为根root的子树。
2.二叉树 2.二叉树
构造表达式树
由后缀表达式构造 见P71
end6
物理与电子学院物理与电子学院-数据结构 23
输出形式是目录表
物理与电子学院物理与电子学院-数据结构
7
1.树 1.树
树的遍历 计算目录usr的大小? usr的大小 计算目录usr的大小? 后序遍历
输出是计算目录大小的顺序
物理与电子学院物理与电子学院-数据结构
8
1.树 1.树
森林的遍历 前序遍历类似于树的前序遍历 类似于树的前序遍历。 前序遍历类似于树的前序遍历。增加一个虚拟的根结 它的儿子为各棵树的根。 点,它的儿子为各棵树的根。那么对这棵树进行前序 遍历,即得到森林的前序序列(不含树根结点) 遍历,即得到森林的前序序列(不含树根结点) 中序遍历类似于树的后序遍历。 类似于树的后序遍历 中序遍历类似于树的后序遍历。增加一个虚拟的根结 它的儿子为各棵树的根。 点,它的儿子为各棵树的根。那么对这棵树进行后序 遍历,即得到森林的中序遍历 去掉树根结点) 中序遍历( 遍历,即得到森林的中序遍历(去掉树根结点)
例 例:结点总数 : 二叉树 为3 时的所有 L 二叉树的树的 形状 E B C F D
物理与电子学院物理与电子学院-数据结构
10
2.二叉树 2.二叉树
二叉树的性质
性质1 在二叉树的第i层上至多有2 性质1:在二叉树的第i层上至多有2i-1个结点
A C D
1层:结点个数 21-1=20 个 层 2层:结点个数 22-1=21 个 层 3层:结点个数 23-1=22 个 层
物理与电子学院物理与电子学院-数据结构 14
2.二叉树 2.二叉树
性质5:对一棵有 n 个结点的完全二叉树按照从第一层(根所在 性质5 个结点的完全二叉树按照从第一层( 的层次〕到最后一层, 的层次〕到最后一层,并且每一层都按照从左到右的次序进行编 号。根结点的编号为 1,最后一个结点的编号为 n。 1:对任何一个编号为 i 的结点而言,它的左儿子的编号为 的结点而言, ,而右儿子的编号为 2i+1(若 n)。 2i( 若 2i <= n) ,而右儿子的编号为 2i+1(若 2i +1 <= n)。 的结点而言, 2:对任何一个编号为 j 的结点而言,它的父亲结点的的编 号为j/2 根结点无父结点。 号为j/2 。根结点无父结点。 A 1 C L 证:对编号归纳 3 2 B E F D 4 6 7 5 P Q R S U 8 9 10 11 12
标准形式:(二叉链表) 标准形式:(二叉链表) :(二叉链表 A B L E F G I
物理与电子学院物理与电子学院-数据结构
data left
right
C D
H
广义标准形式:(三叉链表) 广义标准形式:(三叉链表) :(三叉链表 data left right Parent
18
2.二叉树 2.二叉树
物理与电子学院物理与电子学院-数据结构 4
1.树 1.树
标准形式: 标准形式:
数据域 个儿子指针 第1个儿子指针 第2个儿子指针 个儿子指针 个儿子 个儿子指针 父亲结点指针 第 K 个儿子指针 父亲结点指针
…………
•广义标准形式:在标准形式的基础上,再增加指向父亲结点的指针域。 广义标准形式:在标准形式的基础上,再增加指向父亲结点的指针域 广义标准形式
A
B
C
D
B
C
D
前序: 、 、 、 、 前序:B、L、E、C、F 、D、G、I、H 、 、、
H
L
E
F
G
H
L
E
F
G
中序: 、 、 、 、 中序:L、E、B、F、C 、 I、G、H、D 、 、 、
I
物理与电子学院物理与电子学院-数据结构
I
9
2.二叉树 2.二叉树
定义:一棵树,每个节点不多于两个儿子, 定义:一棵树,每个节点不多于两个儿子, 且位置有序。 且位置有序。