Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.
sum = 22
1 2 3 4 5 6 7
| 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1
|
return true, as there exist a root-to-leaf path 5->4->11->2
which sum is 22.
思路
这一题也是利用深度优先遍历(DFS)的递归方法来进行查找。
需要注意的是,只有自根节点到叶子节点的路径才算是一条符合题意的路径,其它情况都不需要额外考虑了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| class Solution(object): def hasPathSum(self, root, sum): """ :type root: TreeNode :type sum: int :rtype: bool """ if (root): return self.DFS(root, sum) else: return False def DFS(self, root, sum): if (root): val = root.val sum -= val if(root.left is None and root.right is None): if (sum == 0): return True else: return False else: return self.DFS(root.left, sum) or self.DFS(root.right, sum) else: return False
|