来源:覃超

递归写法

Python

visited = set() def dfs(node, visited):if node in visited: # terminator# already visited return visited.add(node) # process current node here. ...for next_node in node.children(): if next_node not in visited: dfs(next_node, visited)

C/C++

map<int, int> visited;void dfs(Node* root) {// terminatorif (!root) return ;if (visited.count(root->val)) {// already visitedreturn ;}visited[root->val] = 1;// process current node here. // ...for (int i = 0; i < root->children.size(); ++i) {dfs(root->children[i]);}return ;
}

Java

    public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> allResults = new ArrayList<>();if(root==null){return allResults;}travel(root,0,allResults);return allResults;}private void travel(TreeNode root,int level,List<List<Integer>> results){if(results.size()==level){results.add(new ArrayList<>());}results.get(level).add(root.val);if(root.left!=null){travel(root.left,level+1,results);}if(root.right!=null){travel(root.right,level+1,results);}}

JavaScript

const visited = new Set()
const dfs = node => {if (visited.has(node)) returnvisited.add(node)dfs(node.left)dfs(node.right)
}

非递归写法

Python

def DFS(self, tree): if tree.root is None: return [] visited, stack = [], [tree.root]while stack: node = stack.pop() visited.add(node)process (node) nodes = generate_related_nodes(node) stack.push(nodes) # other processing work ...

C/C++

void dfs(Node* root) {map<int, int> visited;if(!root) return ;stack<Node*> stackNode;stackNode.push(root);while (!stackNode.empty()) {Node* node = stackNode.top();stackNode.pop();if (visited.count(node->val)) continue;visited[node->val] = 1;for (int i = node->children.size() - 1; i >= 0; --i) {stackNode.push(node->children[i]);}}return ;
}

【数据结构】DFS 代码模板相关推荐

  1. 数据结构——dfs/bfs

    文章目录 dfs/bfs 迷宫 OpenJ_Bailian - 2790 走迷宫 OpenJ_Bailian - 3752 迷宫问题 POJ - 3984 迷宫(一) 计蒜客 - T1595 迷宫(二 ...

  2. DFS(Depth First Search,深度优先搜索)与BFS(Breadth First Search,广度优先搜索)总结与思考

    目录 Depth First Search(dfs) 代码(递归) 代码(非递归) Breadth First Search(bfs) 代码 比较 数据结构 时间复杂度 使用 例题:岛的个数 dfs实 ...

  3. 2019年终总结与新年重磅福利

    一只小狐狸带你解锁NLP/ML/DL秘籍 圣诞已过,元旦即临 回首2019,我们收获满满 展望2020,我们砥砺前行 在这新春佳节之际 小夕给大家送上七福大礼包 别怕太沉,赶紧收下吧~~~ 自然语言处 ...

  4. CSDN竞赛—第六期题解与感想

    CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16 CSDN竞赛-第六期题解与感想 前言/背景 参赛经历 解题思路 经验心得 资料分享 第六期题解 ...

  5. 【编程生活】自动化数据均分助手

    自动化数据均分助手 0 这个软件是做什么的呢? 软件设计初衷 软件实现的功能 1 遍历部分--DFS的Python实现 2. 分配部分 写在最后及完整代码和软件 0 这个软件是做什么的呢? 软件设计初 ...

  6. [万字]java后端研发岗秋招常见面经总结

    序言 今年秋招我从提前批开始到目前拿到offer为止,面试了三四十加企业,一场场录音总结出来的,文末有资料大礼包,可开奖! spring Spring的一个核心功能是IOC,就是将Bean初始化加载到 ...

  7. 历年CCF-CSP认证考试题目解法/思想

    每年的题难度都不太一样,这一点在16.17年上尤其明显,难度低的时候前两道题就是送分题,加一起15分钟解决,得分样例水的不行.难度高的时候第二题就让你模拟半天,且测试样例诡异无比,测试样例通过可能只= ...

  8. 【多益网络】笔试错题整理

    前言 2021.04.09有幸参加多益网络的校招笔试,在此记录一下里面没把握的题目. 简答题 [红黑树]插入操作的时间复杂度O(logN),最坏时间复杂度O(logN) [B+树]插入操作的时间复杂度 ...

  9. 数据结构与算法学习⑤(BFS和DFS 贪心算法 二分查找)

    数据结构与算法学习⑤ 数据结构与算法学习⑤ 1.BFS和DFS 1.1.深度优先搜索算法 1.2.广度优先搜索算法 面试实战 102. 二叉树的层序遍历 104. 二叉树的最大深度 515. 在每个树 ...

最新文章

  1. Hdu 6534 Chika and Friendly Pairs 莫队算法+树状数组
  2. 如何优雅地展示机器学习项目!
  3. Linux Versus Windows, Ubuntu/Mint V XP/Vista/7
  4. 【Paper】2016_A Learning-Based Fault Tolerant Tracking Control of an Unmanned Quadrotor Helicopter
  5. ASP.NET MVC上传图片前后台内容
  6. 服务行为 之 并发与实例化
  7. php的toast,jQuery 一句代码轻松实现 Toast 的提示框
  8. protobuf反射详解
  9. 让Minimal开源UI组件支持中文
  10. security java的配置_springSecurity之java配置篇
  11. web前端经典面试题及答案
  12. inner join 链表_MySQL连表操作之一对多
  13. 使用纯JavaScript实现全网页动态樱花飘落特效
  14. c++实现剧情小游戏:哈利波特
  15. 有线路由器后接无线路由器
  16. 不属于计算机主机设备的是什么,不属于计算机硬件的是什么
  17. vue 图表三维立体3D散点图
  18. java实现截图功能
  19. WIFI转串口无线传输模块,个人体会
  20. python错误找回_python字典键错误无法恢复

热门文章

  1. 新手福音︱正则表达式小工具RegExr
  2. [图灵程序设计丛书].持续交付:发布可靠软件的系统方法.pdf
  3. 部门WIFI配置-防火墙-核心交换机和POE交换机
  4. 阿里:车联网将成新网络入口
  5. golang redis 队列删除图片
  6. java类中各成员初始化的顺序
  7. @AuotoWired+@Qualifier(百度百科)
  8. 寒门难再出贵子(6),一篇值得思考的文章
  9. 高接低挡,Isilon三款新品铺开战线
  10. MySQL 8 中值得关注的新特性和改进