112、path sum

来源:互联网 发布:屏幕视频截取软件 编辑:程序博客网 时间:2024/05/18 07:42

题目:

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.

For example:
Given the below binary tree and sum = 22,
              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.

解题思路:

不多说,直接看这优雅的代码。简直是吊炸天。

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    bool dfs(TreeNode* node,int sum, int curSum){        if(node==NULL)return NULL;        if(node->left==NULL and node->right==NULL)return curSum+node->val==sum;        return dfs(node->left,sum,curSum+node->val) || dfs(node->right,sum,curSum+node->val);    }    bool hasPathSum(TreeNode* root, int sum) {        return dfs(root,sum,0);    }};

python版本:

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution(object):        def hasPathSum(self, root, sum):        """        :type root: TreeNode        :type sum: int        :rtype: bool        """        def dfs(node,sum,curSum):            if(node==None):                return False            if(node.left==None and node.right==None):                return curSum+node.val==sum            return dfs(node.left,sum,curSum+node.val) or dfs(node.right,sum,curSum+node.val)        return dfs(root,sum,0)


0 0
原创粉丝点击