[Leetcode] Path Sum

来源:互联网 发布:网络文明绘画图片大全 编辑:程序博客网 时间:2024/06/05 06:58

题目:

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.


思路:DFS,遇到叶子结点判断和。


class Solution {public:    int trace;        bool path_sum_helper(TreeNode* root, int sum) {        if (root == nullptr) return false;        trace += root->val;        if (root->left == nullptr && root->right == nullptr) {            if (trace == sum) return true;            trace -= root->val;            return false;        }        if (path_sum_helper(root->left, sum)) return true;        if (path_sum_helper(root->right, sum)) return true;        trace -= root->val;        return false;    }        bool hasPathSum(TreeNode *root, int sum) {        trace = 0;        return path_sum_helper(root, sum);    }};


总结:复杂度为O(2^n). 

0 0
原创粉丝点击