剑指offer二叉树中和为某一值的路径python
题目描述
输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)
思路
回溯法 ,定义一个当前路径和所有路径。
代码
# -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def __init__(self): self.onePath =[] self.allPath = [] # 返回二维列表,内部每个列表表示找到的路径 def FindPath(self, root, expectNumber): # write code here if not root: return self.allPath self.onePath.append(root.val) expectNumber -= root.val if not root.left and not root.right and expectNumber == 0: self.allPath.append(self.onePath[:]) elif expectNumber > 0: self.FindPath(root.left,expectNumber) self.FindPath(root.right,expectNumber) self.onePath.pop() return self.allPath