[leetcode 112]Path Sum

来源:互联网 发布:淘宝店铺扣48分 编辑:程序博客网 时间:2024/05/24 01:15

Question:

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.

分析:

很容易知道:

1、如果树为NULL,返回false;

2、如果只有根节点一个节点,则比较根节点的值和sum的值即可;

3、如果有子树,则在左右子树中查找有没有总和为 sum - root->val 的 路径。


代码:

<span style="font-size:14px;">/** * 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 hasPathSum(TreeNode* root, int sum) {        if(root == NULL)            return false;        if(root->left == NULL && root->right == NULL){            if(root->val == sum){                return true;            }            else{                return false;            }        }        return hasPathSum(root->left,sum-root->val) || hasPathSum(root->right,sum-root->val);    }};</span>


0 0
原创粉丝点击