【面试题25】

【题目描述】
输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)

Python坑系列:可变对象与不可变对象

【题目思路】


image.png

从根节点依次到叶节点,如果和为目标和则加入path,不是则回退。
代码:

#         self.right = None
class Solution:
    # 返回二维列表,内部每个列表表示找到的路径
    def FindPath(self, root, expectNumber):
        # write code here
        def find(root, expectNumber, all_path, path, curNumber):
            path.append(root.val)
            curNumber = curNumber + root.val
            if root.left == None and root.right==None and curNumber == expectNumber:
                all_path.append(path[:])#坑,python的可变变量引用
            if root.left !=None:
                find(root.left, expectNumber, all_path, path, curNumber)
            if root.right !=None:
                find(root.right, expectNumber, all_path, path, curNumber)
            path.pop()
        if root==None:
            return []
        all_path = []
        path = []
        curNumber = 0
        find(root, expectNumber, all_path, path, curNumber)
        return all_path

你可能感兴趣的:(【面试题25】)