题目描述
输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。
从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
样例
解题思路
回溯算法:
def recur():
做出选择
recur()
撤销选择
代码实现
class Solution(object):
def findPath(self, root, sum):
"""
:type root: TreeNode
:type sum: int
:rtype: List[List[int]]
"""
path = []
res = []
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))
recur(root.left, tar)
recur(root.right, tar)
path.pop() # 撤销选择
recur(root, sum)
return res