您的位置:首页 > 编程语言 > Python开发

【剑指offer】python实现二叉树中和为某一值的路径

2019-03-11 11:10 183 查看
版权声明:转载请注明,谢谢 https://blog.csdn.net/Laurel1115/article/details/88390223

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

思路

又是一道关于二叉树的题,差不多关于二叉树的题都少不了要用到递归。
1.首先,我们必须判断根节点是否大于期望的路径求和值,如果大于,那么就直接return
2.然后,还要考虑到只有根节点且值为期望的路径求和值,就直接返回由根节点构成的路径
3.以上两条是递归结束的标志,对于其他情况,我们需要分别递归处理左子树和右子树
4.递归结束后,我们再整合在左子树和右子树中满足的路径到一起,最后是按照路径长度对路径排序返回

实现

# -*- 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 or root.val > expectNumber:
return []

if not root.left and not root.right and root.val == expectNumber:
return [[root.val]]
else:
expectNumber -= root.val
left = self.FindPath(root.left,expectNumber)
right = self.FindPath(root.right,expectNumber)

result = [[root.val]+i for i in left]
for i in right:
result.append([root.val]+i)

return sorted(result, key=lambda x:-len(x))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: