24.二叉树中和为某一值的路径(python)

题目描述

输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)
思路: 层次遍历,每次记录当前路径,最后遍历到叶子,满足条件则insert,每次insert到第一个位置,所以前面自然是最长的。
 1 import copy
 2 class Solution:
 3     # 返回二维列表,内部每个列表表示找到的路径
 4     def FindPath(self, root, expectNumber):
 5         # write code here
 6         if root == None:
 7             return []
 8         support = [root]
 9         supportArrayList = [[root.val]]
10         ret=[]
11         while support:
12             tmpNode = support[0]
13             tmpArrayList=supportArrayList[0]
14             if tmpNode.left==None and tmpNode.right == None:
15                 if sum(tmpArrayList)==expectNumber:
16                     ret.insert(0,tmpArrayList)
17             if tmpNode.left:
18                 support.append(tmpNode.left)
19                 newtmpArrayList =copy.copy(tmpArrayList)
20                 newtmpArrayList.append(tmpNode.left.val)
21                 supportArrayList.append(newtmpArrayList)
22             if tmpNode.right:
23                 support.append(tmpNode.right)
24                 newtmpArrayList = copy.copy(tmpArrayList)
25                 newtmpArrayList.append(tmpNode.right.val)
26                 supportArrayList.append(newtmpArrayList)
27             del support[0]
28             del supportArrayList[0]
29         return ret

2019-12-15 09:28:59 

posted @ 2019-12-15 09:30  Assange  阅读(243)  评论(0编辑  收藏  举报