来源:覃超

递归写法

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. 利用BP神经网络教计算机识别语音特征信号(代码部分SL)
  2. c语言俄罗斯方块注释,C语言学习1年-俄罗斯方块(无注释)
  3. 在 Java 的反射中,Class.forName 和 ClassLoader 的区别
  4. 申明   csdn的博客wjszf 也是本人的
  5. 12条守则:让你成功创业当老板
  6. HttpClient 使用证书访问https站点
  7. KMP算法(C++版)
  8. 恢复html的初始选定状态,jQuery实现点击旋转,再点击恢复初始状态动画效果示例...
  9. zabbix所有键值
  10. asp.net千奇百怪的日历
  11. notebook使用技巧
  12. 跨境电商erp系统一套多少钱,电商erp系统多少钱一年
  13. 阿里云SLS日志服务
  14. 多子群的共生非均匀高斯变异樽海鞘群算法-附代码
  15. 学习-Java包装类之Double类(9)
  16. CTS测试中testYuvBurst[1]项
  17. 安卓逆向——刷机Pixel2 ROOT
  18. 家用洗地机到底好不好用?家用洗地机分享
  19. 大学计算机上机实验期末考试题,《大学计算机基础》上机实验报告
  20. 关于射线检测与碰撞检测

热门文章

  1. DOM-window下的常用子对象-location-刷新页面
  2. django+echarts+ajax异步+显示优化--基本例子
  3. 鼠标onfocus或onblur效果
  4. php : 匿名函数(闭包) [一]
  5. iscsi网络存储服务
  6. linux日期函数使用技巧[转自那天的blog]
  7. Underscore js是一个JavaScript实用库
  8. 前端工程化开发之yeoman、bower、grunt
  9. Javascript的原型链
  10. RDA实现SQL CE与SQL Server间数据存取