-
标签:
树
-
难度:
中等
- 题目描述
- 我的解法
这道题结合了 LeetCode 112. 路径总和 和 LeetCode 257. 二叉树的所有路径, 不难解决. 但是要注意个一个语法点: list
进行 append
, insert
操作后,并不返回一个新对象. 例如在下面的代码中,我们希望结果是 [[1]]
, 但是运行结果却是 [None]
.
b = []
a = []
b.append(a.append(1))
print(b)
分享一张刚刚看到的一张图,把我感动得劳泪涕横. 人一旦上了年纪,眼睛就容易进砖头.
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def pathSum(self, root, sum):
"""
:type root: TreeNode
:type sum: int
:rtype: List[List[int]]
"""
result = []
if not root:
return result
if not root.left and not root.right:
if root.val == sum:
result.append([root.val])
return result
else:
return result
lefts = self.pathSum(root.left, sum - root.val)
rights = self.pathSum(root.right, sum - root.val)
for left in lefts:
left.insert(0, root.val)
result.append(left)
for right in rights:
right.insert(0,root.val)
result.append(right)
return result
- 其他解法
暂略。
网友评论