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