社区
数据结构与算法
帖子详情
图的广度优先遍历可以不用队列吗?
pulley
2003-09-23 10:41:40
我知道图的深度优先遍历的非递归算法可以不用栈。有没有不使用队列的广度优先遍历算法?
...全文
1184
11
打赏
收藏
图的广度优先遍历可以不用队列吗?
我知道图的深度优先遍历的非递归算法可以不用栈。有没有不使用队列的广度优先遍历算法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Besich
2003-09-24
打赏
举报
回复
LeeMaRS(偶是小菜虎,不准说我牛!)
老弟,你给的,我怎么看,怎么是深度搜索?
Besich
2003-09-24
打赏
举报
回复
这样子就可以搜索,转化成2叉树了!
当然,这个转化法子,估计你也知道,很多数据结构书中都有介绍
关键是怎么搜索问题!
比方说如果搜索第n层的话,必须搜索pLNode n次,则是第n层。。。。。。
图问题我没考虑过,我说过这是我这两天看The Art Of Computer Programming 后,看到作者转化的时候,突然领悟的,至于图,我感觉方法相似,毕竟图和树联系很紧密
Besich
2003-09-24
打赏
举报
回复
当然可以
首先你要有转化思想
我拿树举例(shit!这两天刚刚看TAOCP学的个新招就这样被你给骗走。。。。。。多给点分)
A
/ | \
B C D
/ | \ /|\
E F GH I J
转化为
A
/
B--C--D
/ /
E--F--GH--I--J
这样搜索,。。。钱不够,先发了,马上到楼下输入点钱继续。。。。
短歌如风
2003-09-24
打赏
举报
回复
深度优先算法之所以可以不用栈,是因为在每一步的结果路径中都包含了这个信息。广度优先恐怕很难不用队列。
短歌如风
2003-09-24
打赏
举报
回复
深度优先算法之所以可以不用栈,是因为在每一步的结果路径中都包含了这个信息。广度优先恐怕很难不用队列。
Besich
2003-09-24
打赏
举报
回复
老天?
搞错了......
我那法子能判断是第几层而已......
sorry......
因为前几天看到这东西,正好能解决以前我的个问题,就......
呵呵
IAmWaistcoat
2003-09-24
打赏
举报
回复
可以
LeeMaRS
2003-09-24
打赏
举报
回复
ft了,昨天大意了,我写的那个的确是DFS,抱歉。
还有就是同意ZhangYv说的。
BSCH,即使是这样转化也还是不行的,要不你试着描述一下算法试试:)
我想不管怎么样,DFS对数据的处理顺序就是运用栈的特性,BFS对数据的处理顺序就是运用队列的特性。至于“栈”“队列”怎么实现,不同的程序可能有不同的方式,但考虑到本质上的时候,还是回回归到“栈”“队列”上来。
不知道今天说的对不对了^^
ZhangYv
2003-09-24
打赏
举报
回复
递归和非递归算法从“程序结构”和“数学逻辑结构”的两个角度来说也是不同的
可能真会存在不用队列的。。。和不用栈的。。。,但程序也只能鳖脚的模拟它们(这种数据结构)的特点。
ZhangYv
2003-09-24
打赏
举报
回复
广度优先遍历算法就是要让搜索的节点先进先出啊,这本来就是队列的特点,为什么要不用队列的广度优先遍历算法?好象没见过...
深度优先的就是要搜索的节点后进先出吧,这本来就是栈的特点,为什么要不用栈的深度度优先遍历算法?
需要注意的是,操作系统中的“栈”和数据结构的“栈”是不同的(概念),
递归和非递归算法从“程序结构”和“数学逻辑结构”也是不同的。
图的深度优先遍历的非递归程序结构的算法可以不用系统堆栈...
LeeMaRS
2003-09-24
打赏
举报
回复
也可以用系统的栈来完成的, 比如经常看到有人这样写FloodFill:
void FloodFill(int x, y);
{
if ((x or y is our of range) || (visited[x][y])) return;
visited[x][y] = 1;
FloodFill(x + 1, y);
FloodFill(x - 1, y);
FloodFill(x, y + 1);
FloodFill(x, y - 1);
}
大意就是这样. 这么写主要就是有个判重方法受到一些限制, 不能直接搜索队例判重了. 而且显然效率不太好.
邻接表与
广度优先遍历
_
广度优先遍历
_邻接表_广度优先_
visual studio基于邻接表的
广度优先遍历
,用到
队列
图
的深度与广度遍历实验报告
图
的深度与广度遍历实验报告 数据结构实验!
二叉树广度和深度优先遍历
二叉树广度和深度优先遍历,通过递归算法实现二叉树的建立,利用递归算法实现深度优先遍历,使用
队列
实现
广度优先遍历
C#编写的树的非递归层次和
广度优先遍历
用
队列
和栈实现树的非递归层次遍历和
广度优先遍历
。
python基础编程:python实现树的深度优先遍历与
广度优先遍历
详解
本文实例讲述了python实现树的深度优先遍历与
广度优先遍历
。分享给大家供大家参考,具体如下: 广度优先(层次遍历) 从树的root开始,从上到下从左到右遍历整个树的节点 数和二叉树的区别就是,二叉树只有左右两个节点 广度优先 顺序:A – B – C – D – E – F – G – H – I 代码实现 def breadth_travel(self, root): 利用
队列
实现树的层次遍历 if root == None: return queue = [] queue.append(root) while queue:
数据结构与算法
33,007
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章