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

 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章