相关的几道题我想用同一种方法做出来,就是把所有的根到叶的路径全部打出来,形成一个list。然后再对list进行操作。不见得最快,但是最好想。代码如下:
# 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]]
"""
if not root:
return []
pathlist = []
def showpath(list1, root):
list2 = list1[::]
if list2 == []:
list2.append(root.val)
else:
list2.append(root.val)
if not root.left and not root.right:
pathlist.append(list2)
else:
if root.left:
list1 = list2
showpath(list1, root.left)
if root.right:
list1 = list2
showpath(list1, root.right)
return pathlist
s = showpath([], root)
pathlist1 = []
for i in s:
sumofall = 0
for j in i:
sumofall += j
if sumofall == sum:
pathlist1.append(i)
return pathlist1