随笔分类 -  AL_DFS

摘要:565. Array Nesting 这道题目的大概意思是,先选定数组中一个起始的位置,再根据她的值定位到相应的下标,继续下去,直到出现循环为止,最后找出最长的不循环的。 显然需要将数组中每个位置起始的都要计算一遍,所以首先想到的就是dfs。 或者是不用函数递归的形式,直接写在一个函数里面,这样还避 阅读全文
posted @ 2018-05-01 17:00 banananana 阅读(330) 评论(0) 推荐(0) 编辑
摘要:Maximum Binary Tree 最大值二叉树 题意 解法 dfs class Solution(object): def constructMaximumBinaryTree(self, nums): """ :type nums: List[int] :rtype: TreeNode "" 阅读全文
posted @ 2017-10-08 08:02 banananana 阅读(224) 评论(0) 推荐(0) 编辑
摘要:Kth Smallest Element in a BST 题意:求在BST中第k个最小的元素 DFS 思路:直接得出有序数组,然后根据下标求值,这应该是最直接能够想到的思路。 class Solution(object): def kthSmallest(self, root, k): """ : 阅读全文
posted @ 2017-09-15 13:49 banananana 阅读(271) 评论(0) 推荐(0) 编辑
摘要:301. Remove Invalid Parentheses 题意:删除最少的无效的括号,使得字符串符合规范。 DFS 思路:先记录需要删除的左括号和右括号,然后遇到左括号就删,遇到右括号就删,分别删到不能再删,考虑递归的各种情况,符合规范则加入。 class Solution(object): 阅读全文
posted @ 2017-09-06 11:48 banananana 阅读(292) 评论(0) 推荐(0) 编辑
摘要:129. Sum Root to Leaf Numbers 题意:计算所有从跟结点到叶结点路径的值的和 DFS 思路:将所有递归到叶结点路径的值累加 class Solution(object): res = 0 def sumNumbers(self, root): """ :type root: 阅读全文
posted @ 2017-09-06 09:59 banananana 阅读(100) 评论(0) 推荐(0) 编辑
摘要:111. Minimum Depth of Binary Tree 题意:二叉树的最小路径 DFS class Solution(object): res = 1e9 def minDepth(self, root): """ :type root: TreeNode :rtype: int """ 阅读全文
posted @ 2017-09-03 09:03 banananana 阅读(71) 评论(0) 推荐(0) 编辑
摘要:124. 二叉树中的最大路径和 题意 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例 1: 示例 2: 解题思路 没仔细看题,以为没有负数,而且要从跟结点到叶结点,那么显然就是左子树的最大和加 阅读全文
posted @ 2017-08-31 17:34 banananana 阅读(121) 评论(0) 推荐(0) 编辑
摘要:113. Path Sum II 这里需要注意的是,不要直接递归而不判断是否存在子结点,那么样做的后果就是左结点的遍历和右结点的遍历生成相同的结果,导致最后的结果中都存在重复路径。 DFS class Solution(object): def pathSum(self, root, sum): " 阅读全文
posted @ 2017-08-30 14:33 banananana 阅读(117) 评论(0) 推荐(0) 编辑
摘要:257. Binary Tree Paths class Solution(object): def binaryTreePaths(self, root): """ :type root: TreeNode :rtype: List[str] """ def helper(node, path): 阅读全文
posted @ 2017-08-30 13:49 banananana 阅读(104) 评论(0) 推荐(0) 编辑
摘要:104. Maximum Depth of Binary Tree class Solution(object): res = 1 def maxDepth(self, root): """ :type root: TreeNode :rtype: int """ def helper(cur, p 阅读全文
posted @ 2017-08-30 13:28 banananana 阅读(130) 评论(0) 推荐(0) 编辑
摘要:101. Symmetric Tree 题意:判断是否是镜像树,也就是结点的最左子树是否和最右子树是否是相等的。 DFS 思路:如果想比较结点的最左子树和最右子树,那么这就是后序遍历,也就是左右中的顺序。 class Solution(object): def isSymmetric(self, r 阅读全文
posted @ 2017-08-30 13:08 banananana 阅读(102) 评论(0) 推荐(0) 编辑
摘要:100. Same Tree DFS 递归 class Solution(object): def isSameTree(self, p, q): """ :type p: TreeNode :type q: TreeNode :rtype: bool """ if not p and not q: 阅读全文
posted @ 2017-08-30 12:38 banananana 阅读(133) 评论(0) 推荐(0) 编辑
摘要:40. 组合总和 II 题意 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 说明: 所有数字(包括目标数)都是正整数。解集不能包含重复的组合。 阅读全文
posted @ 2017-08-19 11:43 banananana 阅读(108) 评论(0) 推荐(0) 编辑