深度优先

我们想要遍历一棵树也好,图也好,当我们想要遍历整个结构,查看所有组合的时候,深度优先搜索是一种选择。

做法可以参考下面例题,深度优先要结合递归使用,当我们想搜索出全部的路径,就要把结果的可能在递归结束的时候解决。比如我们找到了叶节点,在判断结束递归之前,用一个比如vector容器储存该结果。

用什么储存呢,从我们刚开始搜索的时候,也就是递归的入口,准备一个string,我们一直维护这个string,像下递归的时候也要传递下去。当我们某一个节点被递归到的时候,string添加字符,并开始下一层递归。

当返回之前,需要将本次添加的再给弹出,也就是回溯。我们想选择和当前节点同一等级的其他节点,就要把当前的弹出。

当然这种说法有些片面,总之我们需要思考,我们找的各种组合,什么时候加入进结果,什么时候回溯,什么时候向下递归。

leetcode17:电话号码的字母组合(没看到有4位的,我当成都是3位写的,4位的可以通过哈希表,智能指针进行for循环,我这里都定义3个了)

class Solution {vector<string> result;
public:vector<string> letterCombinations(string digits) {if(digits.length()==0){return result;}string tmp;for(int i = 0; i < 3; i++){tmp = "";tmp.push_back((digits[0]-'2')*3 + 'a' + i);letterCombinations(digits, 1, tmp);}return result;};void letterCombinations(string digits, int index, string tmp){cout << tmp << "  ";if(index == digits.length()){result.push_back(tmp);return ;}for(int i = 0; i < 3; i++){tmp.push_back((digits[index]-'2')*3 + 'a' + i);letterCombinations(digits, index+1, tmp);tmp.pop_back();}return;}
};

leetcode-深度优先搜索相关推荐

  1. 【LeetCode 深度优先搜索专项】不同岛屿的数量 II(711)

    文章目录 1. 题目 1.1 示例 1.2 说明 1.3 提示 1.4 进阶 2. 解法一(深度优先搜索) 2.1 分析 2.2 解答 2.3 复杂度 1. 题目 给定一个 m×nm \times n ...

  2. leetcode dfs_深度优先搜索:具有6个Leetcode示例的DFS图遍历指南

    leetcode dfs Have you ever solved a real-life maze? The approach that most of us take while solving ...

  3. LeetCode算法总结-回溯法与深度优先搜索

    转载自  LeetCode算法总结-回溯法与深度优先搜索 回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标.但当探索到某一步时,发现原先选择并不优或达不到目标,就退 ...

  4. LeetCode刷题——剑指offer深度优先搜索题目汇总

    剑指offer深度优先搜索题目汇总 剑指 Offer 12. 矩阵中的路径 剑指 Offer 34. 二叉树中和为某一值的路径 剑指 Offer 36. 二叉搜索树与双向链表 剑指 Offer 54. ...

  5. LeetCode解析------111. 二叉树的最小深度-深度优先搜索

    题目: 给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null,null,15 ...

  6. 学会二叉树不知道干啥?二叉树的深度优先搜索和广度优先搜索,我要打十个乃至二十个(打开你的LeetCode撸起来)学练并举

    目录 一. 图解二叉树的深度优先搜索 二. 二叉树的广度优先搜索  (层序遍历) 三. 打开LeetCode 撸起来 至此, 咱多少被刚刚的后序非递归搞得可能有点小晕晕的, 没事,层序简单呀....  ...

  7. leetcode 559. N 叉树的最大深度(Java版,N叉树的深度优先搜索)

    题目 https://leetcode-cn.com/problems/maximum-depth-of-n-ary-tree/ 题解 思路是 N 叉树的遍历(深度优先搜索) /* // Defini ...

  8. C#LeetCode刷题-深度优先搜索

    深度优先搜索篇 # 题名 刷题 通过率 难度 98 验证二叉搜索树 22.2% 中等 99 恢复二叉搜索树 45.1% 困难 100 相同的树 48.1% 简单 101 对称二叉树 42.1% 简单 ...

  9. 【深度优先搜索】leetcode 1905. 统计子岛屿

    1905. 统计子岛屿 文章目录 题目描述 示例1: 示例2: 提示 方法:深度优先搜索 解题思路 代码 复杂度分析 题目描述 给你两个 m x n 的二进制矩阵 grid1 和 grid2 ,它们只 ...

  10. 深度优先搜索的概念原理、模板和leetcode刷题推荐(js)

    概念 深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次. 我的理解为:深度优先 ...

最新文章

  1. 微信好友数据打包下载--微信数据分析(二)
  2. KVM console 串口连接虚拟机
  3. 良/恶性乳腺癌肿瘤预测
  4. SQL优化之列裁剪和投影消除
  5. Web学习之跨域问题及解决方案
  6. boost stacktrace堆栈打印
  7. python处理地震sac数据_地震数据SAC格式
  8. 【Hadoop】:Windows下使用IDEA搭建Hadoop开发环境
  9. 工程图字体宋体仿宋_电纸书kindle字体推荐——耐看、悦目、经典
  10. android 渐变歌词,Android UI之自定义——最简单的仿QQ音乐歌词颜色渐变
  11. 重启linux系统后 启动mysql ERROR! The server quit without updating PID file /var/run/mysqld/mysqld.pid
  12. C# 基础(三十一)c#实现 正弦sin、反正弦arcsin,正切tan、反正切arctan:求角度值
  13. 【爬虫】爬取个人随手记账户
  14. matlab 稀疏随机矩阵,Matlab 稀疏矩阵函数
  15. 程序员眼中的漫威!太有才了!
  16. 前馈神经网络与支持向量机实战 --- 手写数字识别
  17. 微信云函数的使用步骤
  18. Ubuntu20.04下运行LOAM系列:A-LOAM、LeGO-LOAM、LIO-SAM 和 LVI-SAM
  19. allow_pickle什么意思_in pickle是什么意思
  20. linux shell 操作二进制文件(xxd、dd)

热门文章

  1. h3c使用acl控制ftp访问_H3C访问控制列表(ACL)实例精华
  2. C++ 空间配置器(allocator)
  3. PAT乙级(1016 部分A+B)
  4. 日期处理——日期差值
  5. linux php文件,Linux php文件安装目录在哪
  6. linux中物理cpu、逻辑cpu以及core、vcore
  7. 下载丨Oracle 12c最佳参数实践
  8. 近千人观看live,晚8点继续安排,2个CPU过高案例+1个文件数据删除案例-Oracle故障分析的方法论+DBA能力提升要领...
  9. 基于多源数据画像的失败用例智能分析
  10. 华为超大云数据中心落地贵州,这些硬核技术有利支撑“东数西算”