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

 



posted @ 2020-06-10 10:18  风骚的小柴犬  阅读(178)  评论(0编辑  收藏  举报