美文网首页
112. Path Sum

112. Path Sum

作者: a_void | 来源:发表于2016-09-17 11:06 被阅读0次

    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.

    Notice:

    • Special case for empty tree and sum=0
    • Four case none leaf node with only one child
    /**
     * 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 fun(TreeNode* root, int sum){
            if(NULL == root){
                if(sum == 0) return true;
                else return false;
            }else{
                if(NULL == root->left && NULL == root->right){
                    if(sum == root->val) return true;
                    else return false;
                }else if(NULL == root->left && NULL != root->right){
                    return fun(root->right, sum - root->val);
                }else if(NULL != root->left && NULL == root->right){
                    return fun(root->left, sum - root->val);
                }else{
                    return fun(root->left, sum - root->val) || fun(root->right, sum - root->val);
                }
            }
        }
        bool hasPathSum(TreeNode* root, int sum) {
            if(NULL == root) return false;
            else return fun(root, sum);
        }
    };
    

    相关文章

      网友评论

          本文标题:112. Path Sum

          本文链接:https://www.haomeiwen.com/subject/ezoiettx.html