![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
深度优先搜索
文章平均质量分 54
练习
会飞的鸡翅膀
这个作者很懒,什么都没留下…
展开
-
257. 二叉树的所有路径
题目描述给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:思路递归函数里是String ,但里面用的是StringBuilder来添加字符,这样在回溯的时候StringBuilder就不需要删除最后进入的符号,能保证其他路径上的结点不被添加到当前路径节点上。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNo原创 2021-03-05 10:18:15 · 77 阅读 · 1 评论 -
547. 省份数量
题目描述有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。返回矩阵中 省份 的数量。示例 1:输入:isCon原创 2021-03-04 16:02:36 · 92 阅读 · 1 评论 -
332. 重新安排行程
题目描述给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序。所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必须从 JFK 开始。提示:如果存在多种有效的行程,请你按字符自然排序返回最小的行程组合。例如,行程 [“JFK”, “LGA”] 与 [“JFK”, “LGB”]相比就更小,排序更靠前所有的机场都用三个大写字母表示(机场代码)。假定所有机票至少存在一种合理的行程。所有的机票必须都用一原创 2021-03-02 16:56:22 · 56 阅读 · 0 评论 -
133. 克隆图
题目描述给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。class Node { public int val; public List<Node> neighbors;}测试用例格式:简单起见,每个节点的值都和它的索引相同。例如,第一个节点值为 1(val = 1),第二个节点值为 2(val = 2),以此类推。该图在测试用例中使用邻接列表表示。邻接列表原创 2021-03-01 17:35:00 · 48 阅读 · 0 评论 -
116. 填充每个节点的下一个右侧节点指针
题目描述给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。进阶:你只能使用常量级额外空间。使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额原创 2021-02-28 20:35:18 · 83 阅读 · 0 评论 -
109. 有序链表转换二叉搜索树
题目描述给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/convert-sorted-list-to-binary-search-tree著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。思路用快慢指针找到中位数,以中位数为根节点,左边为左子树,右边为右原创 2021-02-27 21:53:16 · 104 阅读 · 0 评论 -
695. 岛屿的最大面积
题目描述给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],原创 2021-02-26 20:49:41 · 43 阅读 · 0 评论 -
301. 删除无效的括号
题目描述删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果。说明: 输入可能包含了除 ( 和 ) 以外的字符。示例 1:输入: “()())()”输出: ["()()()", “(())()”]示例 2:输入: “(a)())()”输出: ["(a)()()", “(a())()”]示例 3:输入: “)(”输出: [""]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-invalid-p原创 2021-02-26 18:06:54 · 63 阅读 · 0 评论 -
1192. 查找集群内的「关键连接」
题目描述力扣数据中心有 n 台服务器,分别按从 0 到 n-1 的方式进行了编号。它们之间以「服务器到服务器」点对点的形式相互连接组成了一个内部集群,其中连接 connections 是无向的。从形式上讲,connections[i] = [a, b] 表示服务器 a 和 b 之间形成连接。任何服务器都可以直接或者间接地通过网络到达任何其他服务器。「关键连接」是在该集群中的重要连接,也就是说,假如我们将它移除,便会导致某些服务器无法访问其他服务器。请你以任意顺序返回该集群内的所有 「关键连接」。原创 2021-02-24 20:39:51 · 161 阅读 · 0 评论 -
200. 岛屿数量
题目描述给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [[“1”,“1”,“1”,“1”,“0”],[“1”,“1”,“0”,“1”,“0”],[“1”,“1”,“0”,“0”,“0”],[“0”,“0”,“0”,“0”,“0”]]输出:1示例 2:输入:grid = [[“1”,“1原创 2021-02-23 16:58:57 · 47 阅读 · 0 评论