lc112.路径总和 Leetcode recursion binaryTree Dec 09, 2020 题目链接 在做lc124.二叉树中的最大路径和的时候顺手做的,没想到没用多久直接一遍就过了,不过我的实现为什么比较慢啊,看了一下别人的哦原来是我可以直接将hasPathSum这个函数本身作为递归的一部分而不需用重新再在里面定义另外一个函数,所以就慢了4ms左右。这个算法的时间复杂度是O(N),空间复杂度是O(N)。 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def hasPathSum1(self, root: TreeNode, sum: int) -> bool: def traversal(node, target): if not node: return False value = node.val if value == target and node.left is None and node.right is None: return True return traversal(node.left, target - value) or traversal(node.right, target - value) return traversal(root, sum) def hasPathSum2(self, root: TreeNode, sum: int) -> bool: if not root: return False if not root.left and not root.right: return root.val == sum return self.hasPathSum2(root.left, sum-root.val) or self.hasPathSum2(root.right, sum-root.val) PREVIOUSmq051.全排列NEXTlc124.二叉树的最大路径和