
DFS、BFS
深度优先遍历、广度优先遍历
NLP_victor
这个作者很懒,什么都没留下…
展开
-
LeetCode129. 求根到叶子节点数字之和(DFS、BFS)
1、题目描述https://leetcode-cn.com/problems/sum-root-to-leaf-numbers/给定一个二叉树,它的每个结点都存放一个0-9的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明:叶子节点是指没有子节点的节点。输入: [1,2,3] 1 / \ 2 3输出: 25解释:从根到叶子节点路径 1-&...原创 2020-10-29 23:21:34 · 248 阅读 · 0 评论 -
LeetCode79. 单词搜索(DFS+4种directions)
1、题目描述https://leetcode-cn.com/problems/word-search/给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word = "ABCCED", 返回原创 2020-09-13 19:10:14 · 280 阅读 · 0 评论 -
剑指Offer13. 机器人的运动范围DFS(Python)
一、题目描述https://leetcode-cn.com/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38]原创 2020-08-27 15:59:52 · 264 阅读 · 0 评论 -
DFS、回溯-LeetCode491. 递增子序列
1、题目描述https://leetcode-cn.com/problems/increasing-subsequences/给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。输入: [4, 6, 7, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]给定数组的长度不会超过15。 数组中的整数范围是[-100,100]。 给定数组中.原创 2020-08-25 23:45:28 · 207 阅读 · 0 评论 -
DFS-LeetCode130. 被围绕的区域
1、题目描述https://leetcode-cn.com/problems/surrounded-regions/给定一个二维的矩阵,包含'X'和'O'(字母 O)。找到所有被'X'围绕的区域,并将这些区域里所有的'O'用'X'填充。X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X被围绕的区间不会存在于边界上,换句话说,任何边界上的'O'都不会被填充为'...原创 2020-08-11 10:56:55 · 194 阅读 · 0 评论 -
DFS-LeetCode695. 岛屿的最大面积
1、题目描述https://leetcode-cn.com/problems/max-area-of-island/找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0)对于上面这个给定矩阵应返回 6。注意答案不应该是 11 ,因为岛屿只能包含水平或垂直的四个方向的 1 。2、代码详解class Solution(object): def maxAreaOfIsland(self, arr): m = len(arr) if..原创 2020-08-04 21:04:54 · 204 阅读 · 0 评论 -
LeetCode200. 岛屿数量(BFS、DFS)
1、题目描述https://leetcode-cn.com/problems/number-of-islands/给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。[['1','1','1','1','0'],['1','1','0','1','0'],['1','1','0','0','0'],['0','0','0','0..原创 2020-07-20 22:38:17 · 335 阅读 · 0 评论 -
LeetCode617. 合并二叉树(递归DFS+迭代BFS队列)
1、题目描述https://leetcode-cn.com/problems/merge-two-binary-trees/给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL 的节点将直接作为新二叉树的节点。注意:合并必须从两个树的根节点开始。2、代码详解递归写法DFS时间复杂度:O(N) ;空间复杂度:O(h)...原创 2020-07-09 20:13:01 · 293 阅读 · 0 评论 -
回溯、DFS-LeetCode22.括号生成
1、题目描述https://leetcode-cn.com/problems/generate-parentheses/数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。3个左括号,3个右括号,一共有5种组合。2、代码详解标签:回溯算法class Solution(object): def generateParenthesis(self, n): """ :type n: int原创 2020-06-29 20:00:36 · 263 阅读 · 0 评论 -
FS-LeetCode111. 二叉树的最小深度
1、题目描述https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。同类题:DFS-LeetCode104. 二叉树的最大深度https://blog.csdn.net/IOT_victor/article/details/1070215172、代码详解递归写法:关键是搞清楚递归...原创 2020-06-29 16:08:10 · 274 阅读 · 0 评论 -
DFS-LeetCode104. 二叉树的最大深度
1、题目描述https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。2、代码详解递归写法(推荐)# Definition for a binary tree node.class TreeNode(object): def __init__(self, x): .原创 2020-06-29 15:45:59 · 316 阅读 · 0 评论 -
LeetCode297. 二叉树的序列化与反序列化+37:序列化二叉树(剑指offer第2版)
一、题目描述请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种...原创 2020-03-01 22:05:11 · 357 阅读 · 0 评论 -
BFS-32:从上到下打印二叉树(剑指offer2)102. 二叉树的层序遍历
1、题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。2、代码详解相当于按层遍历, 中间需要队列做转存,引入一个队列即可。推广:有向图的广度优先遍历也是基于队列的。# -*- coding:utf-8 -*-class TreeNode: def __init__(self, x): self.val = x sel...原创 2019-05-31 16:25:19 · 271 阅读 · 0 评论