剑指offer-python

【面试题25】

2018-08-05  本文已影响0人  fighting_css

【题目描述】
输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的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
上一篇 下一篇

猜你喜欢

热点阅读