Leetcode刷题日记(2020.6.10):求和路径
题目如下:
思路:
首先说下,这是典型的二叉树的题目,用递归便能解决
算法流程:
1.首先进行安全检查,如果空树,那么直接返回0
2.首先我们从根节点出发,去遍历这个根节点下所有满足条件的路径数目,
每次到达一个节点,将传入的参数sum减去root的val,这是一个递归。
然后我们需要遍历所有的根节点,那么又需要一个递归去遍历。两层递归。
代码如下:
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 """ 4 # @Time : 2020/6/10 9:42 5 6 # @Author : ZFJ 7 8 # @File : 求和路径.py 9 10 # @Software: PyCharm 11 """ 12 13 14 # Definition for a binary tree node. 15 # class TreeNode(object): 16 # def __init__(self, x): 17 # self.val = x 18 # self.left = None 19 # self.right = None 20 21 class Solution(object): 22 def pathSum(self, root, sum): 23 """ 24 本题属于典型的递归的解题方法 25 1.首先进行安全检查,如果空树,那么直接返回0 26 2.首先我们从根节点出发,去遍历这个根节点下所有满足条件的路径数目, 27 每次到达一个节点,将传入的参数sum减去root的val,这是一个递归。 28 然后我们需要遍历所有的根节点,那么又需要一个递归去遍历。两层递归。 29 :type root: TreeNode 30 :type sum: int 31 :rtype: int 32 """ 33 if not root: 34 return 0 35 return self.path(root, sum) + self.pathSum(root.left, sum) + self.pathSum(root.right, sum) 36 37 def path(self, root, sum): 38 if not root: 39 return 0 40 result = 0 41 if root.val == sum: 42 result += 1 43 result += self.path(root.left, sum - root.val) 44 result += self.path(root.right, sum - root.val) 45 return result