【数据结构】DFS 代码模板
来源:覃超
递归写法
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 代码模板相关推荐
- 数据结构——dfs/bfs
文章目录 dfs/bfs 迷宫 OpenJ_Bailian - 2790 走迷宫 OpenJ_Bailian - 3752 迷宫问题 POJ - 3984 迷宫(一) 计蒜客 - T1595 迷宫(二 ...
- DFS(Depth First Search,深度优先搜索)与BFS(Breadth First Search,广度优先搜索)总结与思考
目录 Depth First Search(dfs) 代码(递归) 代码(非递归) Breadth First Search(bfs) 代码 比较 数据结构 时间复杂度 使用 例题:岛的个数 dfs实 ...
- 2019年终总结与新年重磅福利
一只小狐狸带你解锁NLP/ML/DL秘籍 圣诞已过,元旦即临 回首2019,我们收获满满 展望2020,我们砥砺前行 在这新春佳节之际 小夕给大家送上七福大礼包 别怕太沉,赶紧收下吧~~~ 自然语言处 ...
- CSDN竞赛—第六期题解与感想
CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16 CSDN竞赛-第六期题解与感想 前言/背景 参赛经历 解题思路 经验心得 资料分享 第六期题解 ...
- 【编程生活】自动化数据均分助手
自动化数据均分助手 0 这个软件是做什么的呢? 软件设计初衷 软件实现的功能 1 遍历部分--DFS的Python实现 2. 分配部分 写在最后及完整代码和软件 0 这个软件是做什么的呢? 软件设计初 ...
- [万字]java后端研发岗秋招常见面经总结
序言 今年秋招我从提前批开始到目前拿到offer为止,面试了三四十加企业,一场场录音总结出来的,文末有资料大礼包,可开奖! spring Spring的一个核心功能是IOC,就是将Bean初始化加载到 ...
- 历年CCF-CSP认证考试题目解法/思想
每年的题难度都不太一样,这一点在16.17年上尤其明显,难度低的时候前两道题就是送分题,加一起15分钟解决,得分样例水的不行.难度高的时候第二题就让你模拟半天,且测试样例诡异无比,测试样例通过可能只= ...
- 【多益网络】笔试错题整理
前言 2021.04.09有幸参加多益网络的校招笔试,在此记录一下里面没把握的题目. 简答题 [红黑树]插入操作的时间复杂度O(logN),最坏时间复杂度O(logN) [B+树]插入操作的时间复杂度 ...
- 数据结构与算法学习⑤(BFS和DFS 贪心算法 二分查找)
数据结构与算法学习⑤ 数据结构与算法学习⑤ 1.BFS和DFS 1.1.深度优先搜索算法 1.2.广度优先搜索算法 面试实战 102. 二叉树的层序遍历 104. 二叉树的最大深度 515. 在每个树 ...
最新文章
- Hdu 6534 Chika and Friendly Pairs 莫队算法+树状数组
- 如何优雅地展示机器学习项目!
- Linux Versus Windows, Ubuntu/Mint V XP/Vista/7
- 【Paper】2016_A Learning-Based Fault Tolerant Tracking Control of an Unmanned Quadrotor Helicopter
- ASP.NET MVC上传图片前后台内容
- 服务行为 之 并发与实例化
- php的toast,jQuery 一句代码轻松实现 Toast 的提示框
- protobuf反射详解
- 让Minimal开源UI组件支持中文
- security java的配置_springSecurity之java配置篇
- web前端经典面试题及答案
- inner join 链表_MySQL连表操作之一对多
- 使用纯JavaScript实现全网页动态樱花飘落特效
- c++实现剧情小游戏:哈利波特
- 有线路由器后接无线路由器
- 不属于计算机主机设备的是什么,不属于计算机硬件的是什么
- vue 图表三维立体3D散点图
- java实现截图功能
- WIFI转串口无线传输模块,个人体会
- python错误找回_python字典键错误无法恢复