1. 程式人生 > >【leetcode】437. Path Sum III

【leetcode】437. Path Sum III

val num sum one tco class leet sel div

題目如下:

You are given a binary tree in which each node contains an integer value.

Find the number of paths that sum to a given value.

The path does not need to start or end at the root or a leaf, but it must go downwards (traveling only from parent nodes to child nodes).

The tree has no more than 1,000 nodes and the values are in the range -1,000,000 to 1,000,000.

Example:

root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8

      10
     /      5   -3
   / \      3   2   11
 / \   3  -2   1

Return 3. The paths that sum to 8 are:

1.  5 -> 3
2.  5 -> 2 -> 1
3. -3 -> 11

解題思路:題目數據量不大,我嘗試著用遞歸嵌套遞歸的方法,發現也能AC。

代碼如下:

# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): res = 0 def recursive(self,node,sum): self.recursive2(node,0,sum) if node.left != None: self.recursive(node.left, sum) if node.right != None: self.recursive(node.right,sum)
def recursive2(self,node,amount,sum): if node.val + amount == sum: self.res += 1 if node.left != None: self.recursive2(node.left, amount + node.val , sum) if node.right != None: self.recursive2(node.right,amount + node.val, sum) def pathSum(self, root, sum): """ :type root: TreeNode :type sum: int :rtype: int """ self.res = 0 if root != None: self.recursive(root,sum) return self.res

【leetcode】437. Path Sum III