树和图
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
济南 泰山 兖州
第11章 动态数据结构的C语言实现
图
一个图G是由两个集合V和E组成
V是有限的非空顶点集 E是V上的顶点对所构成的边集 用二元组G=(V,E)来表示图G 图分有向图与无向图
7
10 2
5 9
1
12
63
8
15
76
6
3
4
16
7
第11章 动态数据结构的C语言实现
图
{ 图的数组(邻接矩阵)存储表示
源自文库
贾敏 贾探春
第11章 动态数据结构的C语言实现
树
树:结构中数据元素(结点)之间存 在一对多的层次关系
树(Tree)是n(n>=0)个结点的有限集T,T 为空时称为空树,否则它满足如下两个 条件:
有且仅有一个特定的称为根(Root)的结点; 其余的结点可分为m(m>=0)个互不相交的子
集T1,T2,T3…Tm,其中每个子集又是一棵树 ,并称其为子树(Subtree)。
树
二叉树
二叉树或为空树;或是由一个根结点 加上两棵分别称为左和右子树的、互 不交的二叉树组成。
每个结点最多只有两棵子树; 两颗子树有左右之分,顺序不能换。
A
B
C
DE F
第11章 动态数据结构的C语言实现
树
二叉树的存储---顺序存储
A
B
C
双亲结点 i 左孩子 2i 右孩子 2i + 1
存储位置 1 2 3 4 5 6 7 数据元素 A B C ф D E F
C ∧E∧
rchild
∧ F∧
第11章 动态数据结构的C语言实现
图
荣国府亲戚圈
第11章 动态数据结构的C语言实现
图
【旅行社问题】某旅行社想要开辟泰山旅游线路,为了降 低成本,决定采用火车作为交通工具,但希望路程时间最 短,以便增加游览时间,从而吸引更多游客。
石家庄
北京 霸州 衡水
新乡 菏泽
天津 德州
0 (i,j)∉E(G)
邻接矩阵:表示顶点间相联关系 A[i][j]= 1 (i,j)∈E(G)
7
10 2
5
12
1
6
3
7
15
16
4
6
1 1 1 1 0 0
1 1 0 0 1 0
1 0 1 1 1 1 A = 1 0 1 1 0 0
0 1 1 0 1 0
0 0 1 0 0 1
第11章 动态数据结构的C语言实现
图
图的邻接表存储表示
对图中的每一个顶点建立一个依附于该顶点的边的表 表头结点用一顺序结构存储
7
10 2
5
1
2
1
6
3
3
15
16
7
4
5
4
6
6
2 1 1 1 2 3∧
3 5∧ 4 3∧ 3∧
4∧ 5∧
第11章 动态数据结构的C语言实现
树与图
非线性结构 一对多和多对多 图中可提取出树
第11章 动态数据结构的C语言实现
第8章 数组
第11章 动态数据结构的C语言实现
其他数据结构
哈尔滨工业大学
赵玲玲 zhaoll@hit.edu.cn
第11章 动态数据结构的C语言实现
树
贾府家谱
宁国公 贾演
贾代化
贾敷
贾敬
贾惜春
贾珍
贾氏先祖
荣国公 贾源
贾代善
贾赦
贾琏
贾迎春 贾珠
贾元春
贾巧姐
贾兰
贾政 贾宝玉
DE F
ф代表空元素
第11章 动态数据结构的C语言实现
树
二叉树的存储---链式存储
A
B
C
lchild
data
root
A
DE F
struct BTNode {
∧B
datatype data; struct BTNode *lchild, *rchild;
∧D ∧
}
Typedef BTNode *BTree;
根结点
B D H J
A C
EF G I
叶子结点
第一层 第二层 第三层 第四层 第五层
第11章 动态数据结构的C语言实现
树
近亲结婚问题---二叉树
贾宝玉
贾政
史
贾
代 善
老 太 君
王夫人
王
王
夫
夫
人
人
父
母
林黛玉
林如海
贾敏
林 如 海 父
林 如 海 母
贾 代 善
史 老 太 君
第11章 动态数据结构的C语言实现
第11章 动态数据结构的C语言实现
图
一个图G是由两个集合V和E组成
V是有限的非空顶点集 E是V上的顶点对所构成的边集 用二元组G=(V,E)来表示图G 图分有向图与无向图
7
10 2
5 9
1
12
63
8
15
76
6
3
4
16
7
第11章 动态数据结构的C语言实现
图
{ 图的数组(邻接矩阵)存储表示
源自文库
贾敏 贾探春
第11章 动态数据结构的C语言实现
树
树:结构中数据元素(结点)之间存 在一对多的层次关系
树(Tree)是n(n>=0)个结点的有限集T,T 为空时称为空树,否则它满足如下两个 条件:
有且仅有一个特定的称为根(Root)的结点; 其余的结点可分为m(m>=0)个互不相交的子
集T1,T2,T3…Tm,其中每个子集又是一棵树 ,并称其为子树(Subtree)。
树
二叉树
二叉树或为空树;或是由一个根结点 加上两棵分别称为左和右子树的、互 不交的二叉树组成。
每个结点最多只有两棵子树; 两颗子树有左右之分,顺序不能换。
A
B
C
DE F
第11章 动态数据结构的C语言实现
树
二叉树的存储---顺序存储
A
B
C
双亲结点 i 左孩子 2i 右孩子 2i + 1
存储位置 1 2 3 4 5 6 7 数据元素 A B C ф D E F
C ∧E∧
rchild
∧ F∧
第11章 动态数据结构的C语言实现
图
荣国府亲戚圈
第11章 动态数据结构的C语言实现
图
【旅行社问题】某旅行社想要开辟泰山旅游线路,为了降 低成本,决定采用火车作为交通工具,但希望路程时间最 短,以便增加游览时间,从而吸引更多游客。
石家庄
北京 霸州 衡水
新乡 菏泽
天津 德州
0 (i,j)∉E(G)
邻接矩阵:表示顶点间相联关系 A[i][j]= 1 (i,j)∈E(G)
7
10 2
5
12
1
6
3
7
15
16
4
6
1 1 1 1 0 0
1 1 0 0 1 0
1 0 1 1 1 1 A = 1 0 1 1 0 0
0 1 1 0 1 0
0 0 1 0 0 1
第11章 动态数据结构的C语言实现
图
图的邻接表存储表示
对图中的每一个顶点建立一个依附于该顶点的边的表 表头结点用一顺序结构存储
7
10 2
5
1
2
1
6
3
3
15
16
7
4
5
4
6
6
2 1 1 1 2 3∧
3 5∧ 4 3∧ 3∧
4∧ 5∧
第11章 动态数据结构的C语言实现
树与图
非线性结构 一对多和多对多 图中可提取出树
第11章 动态数据结构的C语言实现
第8章 数组
第11章 动态数据结构的C语言实现
其他数据结构
哈尔滨工业大学
赵玲玲 zhaoll@hit.edu.cn
第11章 动态数据结构的C语言实现
树
贾府家谱
宁国公 贾演
贾代化
贾敷
贾敬
贾惜春
贾珍
贾氏先祖
荣国公 贾源
贾代善
贾赦
贾琏
贾迎春 贾珠
贾元春
贾巧姐
贾兰
贾政 贾宝玉
DE F
ф代表空元素
第11章 动态数据结构的C语言实现
树
二叉树的存储---链式存储
A
B
C
lchild
data
root
A
DE F
struct BTNode {
∧B
datatype data; struct BTNode *lchild, *rchild;
∧D ∧
}
Typedef BTNode *BTree;
根结点
B D H J
A C
EF G I
叶子结点
第一层 第二层 第三层 第四层 第五层
第11章 动态数据结构的C语言实现
树
近亲结婚问题---二叉树
贾宝玉
贾政
史
贾
代 善
老 太 君
王夫人
王
王
夫
夫
人
人
父
母
林黛玉
林如海
贾敏
林 如 海 父
林 如 海 母
贾 代 善
史 老 太 君
第11章 动态数据结构的C语言实现