您的位置:首页 > 其它

leetcode -- Path Sum -- 重点

2015-12-07 15:59 141 查看
https://leetcode.com/problems/path-sum/

对于tree的问题,一定要注意使用dfs,bfs. 这里用dfs就是用preorder traverse。遍历左右subtree。

my code:

这里要注意考虑root没有儿子,只有一个儿子,有两个儿子的情况。当只有一个儿子的时候,就只有一个叶子节点,另外一边可以看做一个false的叶子节点。所以在递归里面要判断root是否为none,如果是none,那么则返回false

class Solution(object):

def dfs(self, root, mysum, target_sum):
if not root:#当root只有一个儿子的时候
return False
elif root.left == None and root.right == None:
mysum += root.val#这里要把当前root节点的val加上之后再判断
if mysum == target_sum:
return True
else:
return False
else:
mysum += root.val
a = self.dfs(root.left, mysum, target_sum)
b = self.dfs(root.right, mysum, target_sum)

return  a or b

def hasPathSum(self, root, sum):
"""
:type root: TreeNode
:type sum: int
:rtype: bool
"""
mysum = 0
if root == None:
return False
else:
return self.dfs(root,mysum, sum)


更简单的思路,递归减小sum。

参考/article/4982527.html

class Solution:
# @param root, a tree node
# @param sum, an integer
# @return a boolean
def hasPathSum(self, root, sum):
if root == None:
return False
if root.left == None and root.right == None:
return root.val == sum
return self.hasPathSum(root.left, sum - root.val) or self.hasPathSum(root.right, sum - root.val)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: