題目如下:
思路:
首先說下,這是典型的二叉樹的題目,用遞歸便能解決
算法流程:
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