在做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.二叉树的最大路径和