树的遍历

关于树的遍历的问题探索
BFS:
Comparison to BFS: One application of BFS is to compute the shortest-path
distances from a given source vertex s ∈ V
BFS一个应用即为计算任意一个节点到源节点的最短路径的长度

 

BFS的前驱子图生成一颗树
Gπ = (Vπ,Eπ) 其中 Vπ={v∈V:vπ != NIL }U{s} Eπ = {(vπ,v),v∈Vπ-{s} }.

 

 

DFS:常常用来在另一个算法中作为一个子程序使用
定义时间戳的作用就是为了便于使用

 

DFS的前驱子图可能由多棵深度优先搜索树组成的深度优先搜索森林
定义DFS的前驱子图如下:
Gπ = {V,Eπ},其中Eπ = {(vπ,v): v∈V 且v.π != NIL}.

定义颜色:保证每个节点仅在一颗深度优先搜索树中出现,故而所有的深度优先搜索树是disjoint的

白色路径定理:

在一颗有向或无向图的优先搜索森林中,节点v是节点u的后代
当且仅当在时间u.d时存在一条由u到v的全部由白色节点构成的路径

 

边的分类:
树边:深度优先森林Gπ中的边
后向边:将节点连接到其在的深度优先搜索树中的祖宗节点的边,有向图中的自循环也是后向边
前向边:将节点连接到其在的深度优先搜索树中的后代节点(descendant,显然此处非子节点)的边
横向边:其他所有的边(可以是:
同一颗深度优先搜索树中的边:简单理解就是在不同的路径下的节点所连接的边)
不同的深度优先搜索树中的边(比较好理解)

 

利用颜色来理解边的分类显然更加简便:
******首先必须限定搜索为第一次搜索(等下分析原因)******
在第一次搜索的限定条件下:
对于edge(u,v)
若:
1:节点v的颜色为白色:
根据DFS的pseudocode,则必为树边
节点v的颜色为灰色:
就相当对于已经discover的节点v,
有一个在v节点的下方存在一个v节点的后代节点向u建立起一条边显然为后向边
节点v为黑色:必然为前向边或者其他的横向边
(原因:在第一次搜索中后代节点是在祖宗节点之前被涂成黑色的
其他的横向边:可以直接意会)

转载于:https://www.cnblogs.com/zhou-love-coding/p/5950620.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值