題目:
思路+代碼:
class Solution:
def pathSum(self, root: TreeNode, sum: int) -> List[List[int]]:
# 思路:
# 求和這種,用減法思想來做
# 遞歸:
# 1.遞歸結束:
# 2.當前層遞歸操作:當前層,tar -= root.val, 並且判斷如果tar==0並且是葉子節點,則說明序列正確,加入res; 然後分別遞歸左子樹和右子樹;本質 上是先序遍歷操作
# 3.返回值:不需要返回值
res, path = [], []
def recur(root, tar):
if not root:
return
path.append(root.val)
tar -= root.val
if tar == 0 and not root.left and not root.right:
res.append(list(path)) # 直接添加path,對象不變,則後面執行pop操作後,path變化;list(path)則建立新對象
recur(root.left, tar)
recur(root.right, tar)
path.pop()
recur(root, sum)
return res