zoukankan      html  css  js  c++  java
  • [Swift]DFS和BFS

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/ 
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/10816594.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    DFS:深度优先搜索(Depth-First-Search):

    使用栈保存未被检测的结点,结点按照深度优先的次序被访问并依次被压入栈中,

    并以相反的次序出栈进行新的检测。类似于树的先根遍历,举例:走迷宫,不撞南墙不回头。

    递归实现:

    非递归实现:借助栈来完成转化

    伪代码:

    1 void DFS(状态A)
    2 {
    3     if(A不合法)
    4         return 其父亲节点
    5     if(A为目标状态)
    6         输出(或者记录节点)
    7     if(A不为目标状态)
    8         DFS(A+¥)//调用递归
    9 }

    BFS:广度优先搜索算法(Breadth-First-Search):

    使用队列保存未被检测的结点。结点按照宽度优先的次序被访问和进出队列。

    类似于树的按层次遍历。举例:眼镜掉地上,趴在地上找。

    伪代码: 

     1 q.push(head)
     2 while(!q.empty())
     3 {
     4     temp=q.front();
     5     q.pop();
     6     if(temp为目标状态)
     7         输出
     8     if(temp不合法)
     9         continue
    10     if(temp合法)
    11         q.push(temp+$) 将其所有子节点压入这个queue中
    12 }
  • 相关阅读:
    HTML DOM Document 对象
    浏览器对象模型 BOM
    JavaScript数组和字符串基础
    JavaScript基础一
    css属性hack
    浏览器兼容性问题
    css常见居中方法
    初析BFC
    学习Css的初级篇
    THML基础学习
  • 原文地址:https://www.cnblogs.com/strengthen/p/10816594.html
Copyright © 2011-2022 走看看