深度优先遍历
然后就去远行吧
我们的目标是星辰大海~
展开
-
LeetCode —— 365. 水壶问题(Python3)
有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/water-and-jug-problem著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。...原创 2020-09-04 10:56:21 · 1008 阅读 · 0 评论 -
LeetCode —— 332. 重新安排行程(Python)
给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序。所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必须从 JFK 开始。说明:如果存在多种有效的行程,你可以按字符自然排序返回最小的行程组合。例如,行程 [“JFK”, “LGA”] 与 [“JFK”, “LGB”] 相比就更小,排序更靠前;所有的机场都用三个大写字母表示(机场代码);假定所有机票至少存在一种合理的行程;示例 1:输入: [原创 2020-08-27 19:51:26 · 340 阅读 · 1 评论 -
LeetCode —— 面试题 08.12. 八皇后(Python)
设计一种算法,打印 N 皇后在 N × N 棋盘上的各种摆法,其中每个皇后都不同行、不同列,也不在对角线上。这里的“对角线”指的是所有的对角线,不只是平分整个棋盘的那两条对角线。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/eight-queens-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解题思路:class Solution: def __init__(self): self.r原创 2020-08-23 00:39:47 · 275 阅读 · 1 评论 -
LeetCode —— 980. 不同路径 III(Python)
在二维网格 grid 上,有 4 种类型的方格:1 表示起始方格。且只有一个起始方格。2 表示结束方格,且只有一个结束方格。0 表示我们可以走过的空方格。-1 表示我们无法跨越的障碍。返回在四个方向(上、下、左、右)上行走时,从起始方格到结束方格的不同路径的数目。每一个无障碍方格都要通过一次,但是一条路径中不能重复通过同一个方格。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/unique-paths-iii著作权归领扣网络所有。商原创 2020-08-22 21:54:19 · 467 阅读 · 0 评论 -
LeetCode —— 145. 二叉树的后序遍历【递归与迭代】(Python)
给定一个二叉树,返回它的 后序 遍历。进阶: 递归算法很简单,你可以通过迭代算法完成吗?解法一:递归# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def __init__(self):原创 2020-08-22 18:40:50 · 255 阅读 · 0 评论 -
LeetCode —— 257. 二叉树的所有路径(Python)
给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:————————解题思路:(1)用变量string记录从根结点到当前结点经过的结点路径。(2)从根结点开始遍历二叉树,遍历到某一个结点时,如果当前结点不是叶子结点,在变量string中记录当前结点的信息,接着分别遍历当前结点的左子结点和右子结点;# Definition for a binary tree node.# class TreeNode:# def __init__(self原创 2020-08-21 11:43:58 · 1056 阅读 · 0 评论 -
LeetCode —— 897. 递增顺序查找树(Python)
给你一个树,请你 按中序遍历重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。示例 :来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/increasing-order-search-tree著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。————————解题思路:使用中序遍历获得递增序列,然后按顺序构建只有右子结点的树:# Definition for a binary tree原创 2020-08-21 11:24:38 · 265 阅读 · 0 评论 -
Leetcode —— 1469. 寻找所有的独生节点(Python)
二叉树中,如果一个节点是其父节点的唯一子节点,则称这样的节点为 “独生节点” 。二叉树的根节点不会是独生节点,因为它没有父节点。给定一棵二叉树的根节点 root ,返回树中 所有的独生节点的值所构成的数组 。数组的顺序 不限 。示例 1:输入:root = [1,2,3,null,4]输出:[4]解释:浅蓝色的节点是唯一的独生节点。节点 1 是根节点,不是独生的。节点 2 和 3 有共同的父节点,所以它们都不是独生的。来源:力扣(LeetCode)链接:https://leetcod原创 2020-08-21 11:10:13 · 312 阅读 · 0 评论 -
Leetcode —— 面试题 04.02. 最小高度树(Python)
给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-height-tree-lcci著作权归领原创 2020-08-21 10:20:38 · 360 阅读 · 0 评论 -
leetcode —— 959. 由斜杠划分区域
在由 1 x 1 方格组成的 N x N 网格 grid 中,每个 1 x 1 方块由 /、\ 或空格构成。这些字符会将方块划分为一些共边的区域。(请注意,反斜杠字符是转义的,因此 \ 用 “\” 表示。)。返回区域的数目。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/regions-cut-by-slashes著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。————————————解题方法(一)——DFS深度遍历:原创 2020-06-25 13:22:39 · 216 阅读 · 0 评论 -
面试题 08.09. 括号
括号。设计一种算法,打印n对括号的所有合法的(例如,开闭一一对应)组合。说明:解集不能包含重复的子集。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]解题思路:使用递归加回溯,统计出现的不同情况。class Solution: def __init__(self): self.lists = [] def generateParenthesis(self, n: int)原创 2020-05-15 02:08:32 · 217 阅读 · 0 评论 -
leetcode —— 1319. 连通网络的操作次数
用以太网线缆将 n 台计算机连接成一个网络,计算机的编号从 0 到 n-1。线缆用 connections 表示,其中 connections[i] = [a, b] 连接了计算机 a 和 b。网络中的任何一台计算机都可以通过网络直接或者间接访问同一个网络中其他任意一台计算机。给你这个计算机网络的初始布线 connections,你可以拔开任意两台直连计算机之间的线缆,并用它连接一对未直连的计...原创 2020-05-06 13:55:13 · 473 阅读 · 0 评论 -
leetcode —— 979. 在二叉树中分配硬币
给定一个有 N 个结点的二叉树的根结点 root,树中的每个结点上都对应有 node.val 枚硬币,并且总共有 N 枚硬币。在一次移动中,我们可以选择两个相邻的结点,然后将一枚硬币从其中一个结点移动到另一个结点。(移动可以是从父结点到子结点,或者从子结点移动到父结点。)。返回使每个结点上只有一枚硬币所需的移动次数。示例 1:输入:[3,0,0]输出:2解释:从树的根结点开始,我们...原创 2020-05-06 02:41:07 · 268 阅读 · 0 评论