剑指offer 二叉树中和为某一值的路径

二叉树中和为某一值的路径

题目

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

方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# 返回二维列表,内部每个列表表示找到的路径
def FindPath(self, root, expectNumber):
# write code here
if not root:
return []
if root and not root.left and not root.right and root.val==expectNumber:
return [[root.val]]
res=[]
left=self.FindPath(root.left,expectNumber-root.val)
right=self.FindPath(root.right,expectNumber-root.val)
for i in left+right:
res.append([root.val]+i)
return res
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# 返回二维列表,内部每个列表表示找到的路径
def FindPath(self, root, expectNumber):
# write code here
if not root:
return []

if root and root.val==expectNumber and not root.left and not root.right:
return [[root.val]]

left=self.FindPath(root.left,expectNumber-root.val)
right=self.FindPath(root.right,expectNumber-root.val)
return [[root.val]+i for i in left+right]