LeetCode(112)Path Sum

来源:互联网 发布:win7 mac地址修改 编辑:程序博客网 时间:2024/05/20 04:09

题目如下:

My Submissions
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 binary tree * 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;        }else if(root!=NULL&&root->left==NULL&&root->right==NULL){            if(sum==root->val)                return true;            else                return false;        }else{            sum-=root->val;            if(root->left!=NULL&&root->right==NULL)                return hasPathSum_(root->left, sum);            else if(root->left==NULL&&root->right!=NULL)                return hasPathSum_(root->right, sum);            else                return hasPathSum_(root->left, sum)||hasPathSum_(root->right, sum);        }    }        bool hasPathSum(TreeNode *root, int sum) {        return hasPathSum_(root, sum);    }};

0 0
原创粉丝点击