![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DFS
chandelierds
这个作者很懒,什么都没留下…
展开
-
112、113. 路径总和
思路递归,终止条件为当左节点为空、右为空且sum减去当前节点的值为0是,才返回Trueclass Solution(object): def hasPathSum(self, root, sum): if not root: return False if root.left == None and root.right == ...原创 2019-07-31 07:37:56 · 117 阅读 · 0 评论 -
437. 路径总和 III
和112、113题类似不过这一题更难一些,需要进行双重递归:即对每个节点做递归,再以该节点为起点进行DFS,搜寻满足条件的路径class Solution(object): def __init__(self): self.count = 0 def pathSum(self, root, sum): if not root:...原创 2019-08-15 21:54:31 · 148 阅读 · 0 评论 -
538. 把二叉搜索树转换为累加树
思路:按照规律,即为二叉树中序遍历的逆序,从右子树开始,一次把所有的节点累加,加到当前节点class Solution(object): def convertBST(self, root): self.num = 0 if not root: return None def DFS(root): ...原创 2019-08-15 23:07:42 · 88 阅读 · 0 评论 -
130. 被围绕的区域
思路首先理解题目:以下两种情况下的‘O ’不会被填充为‘X’:‘O ’在边界上的与边界上的‘O’相连的‘O’故可以先对边界上的‘O’可进行深度搜索,将与之相连的‘O’全部换为‘-’,此时剩下的‘O’均为可以放心的填充为‘X’,再将‘-’换回‘O’。class Solution(object): def solve(self, board): if len(...原创 2019-09-03 10:39:41 · 164 阅读 · 0 评论 -
108. 将有序数组转换为二叉搜索树、109. 有序链表转换二叉搜索树
108思路二叉树中序遍历的逆过程只要找到数组的中点使之成为根节点,再递归的中点的左边元素和右边元素分别进行找中点操作,以建立左子树和右子树。class Solution(object): def sortedArrayToBST(self, nums): if not nums: return None l, r = 0, ...原创 2019-09-05 21:59:54 · 245 阅读 · 0 评论 -
116、117填充每个节点的下一个右侧节点指针
116思路DFS递归class Solution(object): def connect(self, root): if not root: return None if root.left: root.left.next = root.right if root.next:...原创 2019-09-06 19:54:57 · 112 阅读 · 0 评论 -
257. 二叉树的所有路径
思路DFS递归class Solution(object): def binaryTreePaths(self, root): #递归终止条件 if not root: return [] if not root.left and not root.right: return [str(r...原创 2019-09-06 22:18:50 · 105 阅读 · 0 评论