数据结构4.4.2 树的顺序存储
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》 精品课程
结
点 下
标
数
据 域
双
亲
下 标
0 R 1
1A0
2B0
3C0
4D1
5E1
6F3
7G6
8H6
9K6
第2页
2.孩子表示法:层次顺序+子结点下标
R
结
点 下
标
数
据 域
子结点下标
A
B
C
0R1 2 3 1A4 5 0
DE
F
2B0 0 0
GHK
3C6 0 0
对树 T 中结点,按层次顺序用自然 数从 0 开始编号;
《数据结构》 精品课程
第10页
《数据结构》 精品课程
第6页
例如关于一棵树 T 有下述信息:
先根序列: A B C D E F G H I J K L 结点次数序列: 4 0 3 0 0 0 0 2 2 0 0 0
H的两个儿 子一定在H 的右边且J、 K除外, 为 什么?
可从右向左来确定树 T 的结构,由先根序遍历的定义可
知,I 是 J 和 K 的父结点;同样,H是 I 和 L 的父结点;
C 是 D、E 和 F 的父结点;A 是 B、C、G 和 H 的父结点.
T之根 A 的层为零, A 之度为 4, 有 B、C、G、H 等4 个子
结点,其层数必为 1,故 D、E、F、I、J、K、L 等一定
不是 A 的子结点,因其层数不为 1; 等等。
下《页数据给结出构了》树精品T 课的程结构图。
第 7 第页7页
树的先根遍历定义(递归定义) ① 访问树 T 的根结点; ② 从左到右,依序按树的先根次序遍历 T 的诸子树.
下图的先根序列:RADEBCFGHK
R
A
B
C
D
E
F
GHK
百度文库
《数据结构》 精品课程
第4页
A B C D
A
B
C
D
A
A
B
C
D
B C
D
A
B
C
D
A B
C D
A B
C D
由上图知:有很多包含A, B, C, D四个结点结构不同的 树形,但它们的先根序列却相同,即皆为ABCD. 可 见,以先根序顺序存储一棵树 T 的所有结点,显然无 法确定 T 的结构.
T 中任一结点,其孩子个数不超过 T 的度(见ppt的第14页);
便于涉及孩子的操作; 求双亲不便; 采用同构的结点,空间效率低。
作《业数:据结如构何》求精某品一课程结点之双亲?
4D0 5E0 6F7 7G0 8H0 9K0
00 00 89 00 00 00
第3页
3. 树的先根序列及结点次数表示法
A
B
C
G
H
DEF
I
L
J
K
《数据结构》 精品课程
第8页
4. 树的后根序列及结点次数表示法
为什么 D、E、F是 C 的 3个儿子?
树还可用后根序列和结点次数进行顺序存储. 树的后根遍历递归定义:
① 从左向右依次后根遍历根结点的诸子树 (若存在);
② 访问树的根结点。
后根次序和结点次数表示法 后根序列 B D E F C G J K I L H A 结点次数 0 0 0 0 3 0 0 0 2 0 2 4 结点层数 1 2 2 2 1 1 3 3 2 2 1 0
4.4.2 树的顺序存储结构
1. 双亲表示法 2. 孩子表示法 3. 先根序列及结点次数表示法 4. 后根序列及结点次数表示法 5. 层次序列及结点次数表示法
《数据结构》 精品课程
第1页
1.双亲表示法:层次顺序+父结点下标
R
A
B
C
DE
F
GHK
对树T中结点,按层次顺序用自然数从 0 开始编号;
T 中任一结点 p 只有1个双亲结点; 便于涉及双亲的操作; 求结点的孩子时需要遍历整棵树。 作业:如何求某一结点的孩子结点?
《数据结构》 精品课程
第9页
5. 树的层次序列和结点次数表示法
由一棵树 T 的层次序列和 T 的每个结点的次 数,则能唯一确定 T 的结构。
A
B
C
G
H
D
E
F
I
L
J
K
层次序列 A B C G H D E F I L J K 结点次数 4 0 3 0 2 0 0 0 2 0 0 0 结点层数 0 1 1 1 1 2 2 2 2 2 3 3
《数据结构》 精品课程
第5页
定理4.2 若已知一棵树 T 的先根序列和每个结点 的次数,则能唯一确定 T 之结构。
证明:用数学归纳法。
若树 T 中只有一个结点,定理显然成立; 假设 T 中结点个数小于n(n 2)时定理成立; 当 T 中有 n 个结点时,由树的先根序列可知,第 一个结点是根结点,其次数 k 1,因此根结点有 k 个结点数小于 n 的子树,由归纳假设知每个子 树的结构均可确定,从而 T 之结构亦可确定. 证毕▐
结
点 下
标
数
据 域
双
亲
下 标
0 R 1
1A0
2B0
3C0
4D1
5E1
6F3
7G6
8H6
9K6
第2页
2.孩子表示法:层次顺序+子结点下标
R
结
点 下
标
数
据 域
子结点下标
A
B
C
0R1 2 3 1A4 5 0
DE
F
2B0 0 0
GHK
3C6 0 0
对树 T 中结点,按层次顺序用自然 数从 0 开始编号;
《数据结构》 精品课程
第10页
《数据结构》 精品课程
第6页
例如关于一棵树 T 有下述信息:
先根序列: A B C D E F G H I J K L 结点次数序列: 4 0 3 0 0 0 0 2 2 0 0 0
H的两个儿 子一定在H 的右边且J、 K除外, 为 什么?
可从右向左来确定树 T 的结构,由先根序遍历的定义可
知,I 是 J 和 K 的父结点;同样,H是 I 和 L 的父结点;
C 是 D、E 和 F 的父结点;A 是 B、C、G 和 H 的父结点.
T之根 A 的层为零, A 之度为 4, 有 B、C、G、H 等4 个子
结点,其层数必为 1,故 D、E、F、I、J、K、L 等一定
不是 A 的子结点,因其层数不为 1; 等等。
下《页数据给结出构了》树精品T 课的程结构图。
第 7 第页7页
树的先根遍历定义(递归定义) ① 访问树 T 的根结点; ② 从左到右,依序按树的先根次序遍历 T 的诸子树.
下图的先根序列:RADEBCFGHK
R
A
B
C
D
E
F
GHK
百度文库
《数据结构》 精品课程
第4页
A B C D
A
B
C
D
A
A
B
C
D
B C
D
A
B
C
D
A B
C D
A B
C D
由上图知:有很多包含A, B, C, D四个结点结构不同的 树形,但它们的先根序列却相同,即皆为ABCD. 可 见,以先根序顺序存储一棵树 T 的所有结点,显然无 法确定 T 的结构.
T 中任一结点,其孩子个数不超过 T 的度(见ppt的第14页);
便于涉及孩子的操作; 求双亲不便; 采用同构的结点,空间效率低。
作《业数:据结如构何》求精某品一课程结点之双亲?
4D0 5E0 6F7 7G0 8H0 9K0
00 00 89 00 00 00
第3页
3. 树的先根序列及结点次数表示法
A
B
C
G
H
DEF
I
L
J
K
《数据结构》 精品课程
第8页
4. 树的后根序列及结点次数表示法
为什么 D、E、F是 C 的 3个儿子?
树还可用后根序列和结点次数进行顺序存储. 树的后根遍历递归定义:
① 从左向右依次后根遍历根结点的诸子树 (若存在);
② 访问树的根结点。
后根次序和结点次数表示法 后根序列 B D E F C G J K I L H A 结点次数 0 0 0 0 3 0 0 0 2 0 2 4 结点层数 1 2 2 2 1 1 3 3 2 2 1 0
4.4.2 树的顺序存储结构
1. 双亲表示法 2. 孩子表示法 3. 先根序列及结点次数表示法 4. 后根序列及结点次数表示法 5. 层次序列及结点次数表示法
《数据结构》 精品课程
第1页
1.双亲表示法:层次顺序+父结点下标
R
A
B
C
DE
F
GHK
对树T中结点,按层次顺序用自然数从 0 开始编号;
T 中任一结点 p 只有1个双亲结点; 便于涉及双亲的操作; 求结点的孩子时需要遍历整棵树。 作业:如何求某一结点的孩子结点?
《数据结构》 精品课程
第9页
5. 树的层次序列和结点次数表示法
由一棵树 T 的层次序列和 T 的每个结点的次 数,则能唯一确定 T 的结构。
A
B
C
G
H
D
E
F
I
L
J
K
层次序列 A B C G H D E F I L J K 结点次数 4 0 3 0 2 0 0 0 2 0 0 0 结点层数 0 1 1 1 1 2 2 2 2 2 3 3
《数据结构》 精品课程
第5页
定理4.2 若已知一棵树 T 的先根序列和每个结点 的次数,则能唯一确定 T 之结构。
证明:用数学归纳法。
若树 T 中只有一个结点,定理显然成立; 假设 T 中结点个数小于n(n 2)时定理成立; 当 T 中有 n 个结点时,由树的先根序列可知,第 一个结点是根结点,其次数 k 1,因此根结点有 k 个结点数小于 n 的子树,由归纳假设知每个子 树的结构均可确定,从而 T 之结构亦可确定. 证毕▐