当前位置:   article > 正文

深度优先搜索(DFS)C++实现_dfs函数的c++实现

dfs函数的c++实现

算法基本思想:

深度优先搜索是尽可能深的搜索一个图,对于一个新发现的节点,如果还有以此为起点还未探测到的边,就沿此边探测下去。

当顶点v的所有边都被探寻过后,搜索将回溯到发现顶点v的起始点的那些边。这一过程一直进行到一发现从原点可达的所有点为止。

如果还存在未发现的顶点,则选择其中一个座位源顶点,重复上过程。

递归实现

  1. void DFS_Search(ListNode* pRoot)
  2. {
  3. if(!pRoot) return;
  4. visit(pRoot);
  5. pRoot->visited = true;
  6. foreach(ListNode* pChild in pRoot->adjacent)
  7. if(!pChild->visited)
  8. DFS_Seach(pChild);
  9. }

非递归实现

  1. #include <iostream>
  2. #include <stack>
  3. using namespace std;
  4. #define MaxNode 20
  5. #define MAX 2000
  6. #define StartNode 1
  7. int map[MaxNode+1][MaxNode+1];
  8. void dfs_stack(int start, int n){
  9. int visited[MaxNode],s_top;
  10. for(int i = 0;i <= MaxNode; i++){
  11. visited[i] = 0;
  12. }
  13. visited[start] = 1;
  14. stack <int> s;
  15. cout<<start<<" ";
  16. for(int i = 1; i <&#
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/933023
推荐阅读
相关标签
  

闽ICP备14008679号