2025年广度优先搜索实例(广度优先搜索实例分析)

广度优先搜索实例(广度优先搜索实例分析)svg xmlns http www w3 org 2000 svg style display none svg

大家好,我是讯享网,很高兴认识大家。



 <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <p></p> 

讯享网

在这里插入图片描述
讯享网

讯享网

对此二维数组进行深度搜索与广度搜索,并遍历结果。

深搜结果
a c b d f g e
广搜结果
a c d f b g e


深搜的遍历过程就是尽可能深的搜索树的分支,当一个节点的所有子节点都被探寻过了,搜索将回溯到发现该节点的那那条边的起始节点
这个过程会一直持续到已发现节点可到达所有节点为止。
如果还存在未发现的节点则进程会随便选择一个未发现的节点重复以上的过程
整个进程直到所有节点都被访问过为止。


深度优先搜索遍历过程
从a开始搜索可以看到a的子节点有c、d、f系统会依次对其进行深度优先搜索
进程先对c进行子节点的搜索可以看出c有两个子节点b、d
可以看出b没有子节点了,但是d节点作为c的子节点还没有被访问所有这个时候程序会走到d的位置
但是d也没有子节点这个时候进程会回溯到发现d的这条边的起始节点a的位置然后在对其进行搜索
a的子节点中只有f没有被遍历了所以进程只能进到f的位置然后在对其进行遍历可以看出f的两个子节点也没有子节点
所以进程在对g、e进行完遍历之后进程结束





广度优先搜索
和深搜不同广搜会沿着树的高度和宽度对节点进行依次遍历
从树的根节点a开始,会发现a的子节点有c、d、f三个子节点,进程会先对这三个节点进行访问然后再访问其的子节点
对c、d、f完成访问之后进行则会探寻这三个节点的子节点并对其进行遍历,可以从图中看出他们的子节点有c、g、e
可以看出c、g、e没有子节点了所以程序对其遍历之后随之结束



 

在这里插入图片描述
static int[][] nums = {
{ 0 , 1 , 0 , 0 , 0 , 0 , 0, 1 , 0},
{ 1 , 0, 1 ,0 , 1 , 0 , 0 , 0 , 0},
{ 0 , 1 , 0 , 1 , 0 ,0 , 0 , 0 , 0},
{ 0 , 0 , 1 , 0 , 1 , 1 , 0 , 0 ,0},
{ 0 , 1 , 0 , 1 , 0 , 0 , 0 , 0 , 0},
{ 0 , 0 , 0 , 1 , 0 , 0 , 1 , 1 , 0},
{ 0 , 0 , 0 , 0 , 0 , 1, 0 , 0 , 0},
{ 1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 1},
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0}
};










深搜结果
1 2 3 4 5 6 7 8 9
广搜结果
1 2 8 3 5 6 9 4 7


深搜的遍历过程就是尽可能深的搜索树的分支,当一个节点的所有子节点都被探寻过了,搜索将回溯到发现该节点的那那条边的起始节点
这个过程会一直持续到已发现节点可到达所有节点为止。
如果还存在未发现的节点则进程会随便选择一个未发现的节点重复以上的过程
整个进程直到所有节点都被访问过为止。


深搜遍历过程
从1开始搜索可以看到1的子节点有2、8两个,进程会依次对其进行深度优先搜索
进程先对2进行子节点的搜索可以看出2也有两个子节点3、5
然后进程又会对3进行子节点的搜索可以看出只有一个子节点4,而4没有子节点了这个时候进程就会回溯到2的位置然后对5进行子节点的搜索
可以看出5的子节点也是只有一个4,但是这个时候5还有一个父节点6没有被访问所以进程不会回溯到2的位置
而是对6进行子节点的搜索,6的子节点只有一个7这个时候进程又会发现6有父节点8没有访问过
所以进程会对8再次再次进行子节点的搜索,发现子节点只有6和9但是6已经访问过了,而9也没有子节点
到这里树的所有节点就完成了全部的探索了






广搜遍历过程
和深搜不同广搜会沿着树的高度和宽度对节点进行依次遍历
从树的根节点1开始,会发现1的子节点有2、8两个子节点,进程会先对这两个节点进行访问然后再访问其的子节点
对2、8完成访问之后进行则会探寻这两个节点的子节点并对其进行遍历,可以从图中看出他们的子节点有3、5、6、9
然后进程对着4个节点完成遍历之后会再次探寻其的子节点可以看出只有4和7了且无子节点
在对4和7完成遍历之后整个进程也就随之结束了




讯享网
 

在这里插入图片描述
static int[][] nums = {
{ 0 , 1 , 1 , 1 , 0 , 0 , 0},
{ 1 , 0 , 1 , 0 , 0 , 1 , 0},
{ 1 , 1 , 0 , 1 , 1 , 0 , 0},
{ 1 , 0 , 1 , 0 , 0 , 0 , 1},
{ 0 , 0 , 1 , 0 , 0 , 0 , 0},
{ 0 , 1 , 0 , 0 , 0 , 0 , 1},
{ 0 , 0 , 0 , 1 , 0 , 1 , 0},
};








深搜结果
v1 v2 v3 v4 v7 v6 v5
广搜结果
v1 v2 v3 v4 v6 v5 v7


深搜的遍历过程就是尽可能深的搜索树的分支,当一个节点的所有子节点都被探寻过了,搜索将回溯到发现该节点的那那条边的起始节点
这个过程会一直持续到已发现节点可到达所有节点为止。
如果还存在未发现的节点则进程会随便选择一个未发现的节点重复以上的过程
整个进程直到所有节点都被访问过为止。


深搜遍历过程
从v1开始搜索可以看到a的子节点有v2、v3、v4系统会依次对其进行深度优先搜索
进程先对v2进行子节点的搜索可以看出v2有两个子节点v3、v4
进程会先对v3进行遍历会发现v3的子节点只有v4,然后v4只有一个子节点v7
进程遍历到v7的时候因为v7还有一个父节点v6没有被访问所以进程会走到v6的位置因为v6的根节点已经遍历了
所以进程会返回到发现v6这条边的起始点也就是v1,但是这个时候还有节点没有被遍历所以
进程会随便选择一个未发现的节点进入然后遍历从图中看出只有v5没有遍历了所以
对v5进行遍历之后进程也就随之结束了






广搜遍历过程
和深搜不同广搜会沿着树的高度和宽度对节点进行依次遍历
从树的根节点v1开始,会发现v1的子节点有v2、v3、v4三个子节点,进程会先对这三个节点进行访问然后再遍历其的子节点
对v2、v3、v4完成访问之后则会探寻这三个节点的子节点并对其进行遍历,可以从图中看出他们未访问的子节点只有v6、v5、v7
而v6、v7、v5没有子节点了所以程序对其遍历之后随之结束



讯享网
 

在这里插入图片描述
static int[][] nums = {
{ 0 , 1 , 1 , 0 ,0 ,0},
{ 1 , 0 ,1 , 1 ,0, 0},
{ 1 , 1 , 0 ,1 , 1 , 0},
{ 0 , 1 , 1 , 0 , 1 , 1},
{ 0 , 0 , 1 , 1 , 0 , 0},
{ 0 , 0 , 0 , 1 , 0 , 0},
};







深搜结果
a b c d e f
广搜结果
a b c d e f


深搜的遍历过程就是尽可能深的搜索树的分支,当一个节点的所有子节点都被探寻过了,搜索将回溯到发现该节点的那那条边的起始节点
这个过程会一直持续到已发现节点可到达所有节点为止。
如果还存在未发现的节点则进程会随便选择一个未发现的节点重复以上的过程
整个进程直到所有节点都被访问过为止。


深搜遍历过程
从a开始搜索可以看到1的子节点有b、c两个,进程会依次对其进行深度优先搜索
进程先对b进行子节点的搜索可以看出b也有两个子节点c、d
然后进程又会对c进行子节点的搜索可以看出它也是有两个子节点d、e
进程又会查找d的子节点可以发现d也有两个子节点e、f
这个时候e和f都没有子节点了树的所有节点也都被遍历了




广搜遍历过程
和深搜不同广搜会沿着树的高度和宽度对节点进行依次遍历
从树的根节点a开始,会发现a的子节点有b、c两个子节点,进程会先对这两个节点进行访问然后再访问其的子节点
对b、c完成遍历之后进行则会探寻这两个节点的子节点并对其进行遍历,可以从图中看出他们未遍历的子节点有d、e
然后进程对着2个节点完成遍历之后会再次探寻其的子节点
可以看出只有一个f了且f没有子节点所以程序对f完成遍历之后整个进程也就随之结束了




讯享网

广搜代码

 

在这里插入图片描述
static int[][] nums = {
{ 0 , 1 , 0 , 0 , 1 ,1},
{ 1 , 0 , 1, 1 , 0 , 1},
{ 0 , 1 , 0 , 1 , 0, 0},
{ 0 , 1 , 1, 0 , 1 , 1},
{ 1 , 0 , 0 , 1 , 0 , 1},
{ 1 , 1 , 0 , 1 , 1 , 0},
};







深搜结果
a b c d e f
广搜结果
a b e f c d


深搜的遍历过程就是尽可能深的搜索树的分支,当一个节点的所有子节点都被探寻过了,搜索将回溯到发现该节点的那那条边的起始节点
这个过程会一直持续到已发现节点可到达所有节点为止。
如果还存在未发现的节点则进程会随便选择一个未发现的节点重复以上的过程
整个进程直到所有节点都被访问过为止。


深度优先搜索遍历过程
从a开始搜索可以看到a的子节点有b、e、f三个进程会依次对其进行深度优先搜索
进程先对b进行子节点的搜索可以看出b也有三个子节点c、d、f
然后进程对c进行子节点的搜索可以从图中看出c的子节点只有d,在对d进行完遍历之后
d虽然没有子节点但是它还有一个没有被遍历的父节点e所以这个时候进程会走到e
e的子节点有d、f两个但是d已经被遍历了所以现在只能遍历f了
在对f完成遍历之后整个树的节点也就全部都遍历完成了





广度优先搜索
和深搜不同广搜会沿着树的高度和宽度对节点进行依次遍历
从树的根节点a开始,会发现a的子节点有b、e、f三个子节点,进程会先对这三个节点进行访问然后再访问其的子节点
对b、e、f完成访问之后进行则会探寻这三个节点的子节点并对其进行遍历,可以从图中看出他们未遍历的子节点只有c、d了
而对c、d完成遍历之后他们也就没有子节点可以遍历了所以整个程序也就结束了



深搜代码

讯享网

广搜代码

 


小讯
上一篇 2025-06-16 14:36
下一篇 2025-05-05 16:11

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/139105.html