题目描述 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意
题目描述
输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)
# -*- coding:utf-8 -*-# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
import copy
class Solution:
# 返回二维列表,内部每个列表表示找到的路径
def FindPath(self, root, expectNumber):
# write code here
if root == None:
return []
ret=[]
supportArrayList = [[root.val]]
support = [root]
while support:
tmpNode = support[0]
tmpArrayList = supportArrayList[0]
if tmpNode.left == None and tmpNode.right== None:
if sum(tmpArrayList)==expectNumber:
ret.insert(0,tmpArrayList)
if tmpNode.left:
support.append(tmpNode.left)
newtmpArrayList = copy.copy(tmpArrayList)
newtmpArrayList.append(tmpNode.left.val)
supportArrayList.append(newtmpArrayList)
if tmpNode.right:
support.append(tmpNode.right)
newtmpArrayList = copy.copy(tmpArrayList)
newtmpArrayList.append(tmpNode.right.val)
supportArrayList.append(newtmpArrayList)
del supportArrayList[0]
del support[0]
return ret