关于使用DFS,BFS的一些思考总结
2017-03-01 15:04
483 查看
总的来说,DFS和BFS是一种遍历策略,整体运行的框架是固定的,但是具体处理以及函数的形参是需要根据具体问题具体来定的。
也就是说,在BFS或者DFS的时候,首先需要搞明白的是:遍历的目的是什么。
标记结点已经访问(任何题目中必须有)
遍历过程中计算参数(选择)
计算参数是比较常见的题目,只标记结点是否访问在计算连通块个数时总结过。
详细说一下计算参数问题。
可以在形参中用参数引用,直接改变这个参数就等同于计算,因为外面可以感受到变化,DFS用的较多,因为DFS是递归处理。
或者定义全局变量,函数运行直接改变,这个才BFS更多用,因为BFS是循环处理。
DFS用起来仍然需要从递归函数的写法上多加注意,即注意:
递归边界
当前层的逻辑处理
递归式的写法
也就是说,在BFS或者DFS的时候,首先需要搞明白的是:遍历的目的是什么。
标记结点已经访问(任何题目中必须有)
遍历过程中计算参数(选择)
计算参数是比较常见的题目,只标记结点是否访问在计算连通块个数时总结过。
详细说一下计算参数问题。
可以在形参中用参数引用,直接改变这个参数就等同于计算,因为外面可以感受到变化,DFS用的较多,因为DFS是递归处理。
或者定义全局变量,函数运行直接改变,这个才BFS更多用,因为BFS是循环处理。
DFS用起来仍然需要从递归函数的写法上多加注意,即注意:
递归边界
当前层的逻辑处理
递归式的写法
相关文章推荐
- 关于sqlite3使用top的一些规则总结
- 关于IIS在使用中遇到的一些问题的总结
- 关于web自动化测试的一些自己的思考和总结
- 关于cmake的一些使用总结
- 关于虚拟化一些思考——不应该盲目使用
- 关于sqlite3使用top的一些规则总结
- 关于开发简易搜索引擎的一些总结和思考
- 关于cmake的一些使用总结
- 关于推送系统设计的一些总结与思考(三)
- 关于STM32与SD卡通信的一些思考与总结
- 转载sql server 关于 default value的一些使用总结
- 关于virtualbox的一些使用总结
- 算法总结(7)--leetcode上的递归,BFS,DFS思考
- 01.关于使用Hibernate技术实现分页显示的思考总结
- 关于使用GUID和Identity做主键的一些思考
- sql server 关于 default value的一些使用总结
- 关于kvm轻度使用的一些总结
- 关于 KVO 和 KVC 的一些总结 以及使用KVC进行字典和模型的互相转换
- 关于RDLC报表的一些总结,希望对正在学习使用它的朋友有所帮助
- 关于用上线IOS上线的一些总结与思考