LeetCode 437. Path Sum III

来源:互联网 发布:蓝月传奇官印升级数据 编辑:程序博客网 时间:2024/06/11 02:09

题意解析

在给定的二叉树中找到这样的路径,所有元素的和等于给定整数。
路径不一定从根节点出发,到叶节点结束。而只要它满足是从上至下的。
找出所有路径的数量。

Accepted Solution

/** * 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:    int pathSum(TreeNode* root,int sum) {        if(root==NULL)            return 0;        return dfs(root,sum)+pathSum(root->left,sum)+pathSum(root->right,sum);    }    int dfs(TreeNode* root,int sum) {        int result=0;        if(root==NULL) {             return 0;        }        if(root->val==sum) {            result++;        }        result+=(dfs(root->left,sum-root->val)+dfs(root->right,sum-root->val));        return result;    }}

使用了两个递归函数,pathSum是求从所有节点出发的满足条件的路径数的和;dfs是寻找从某个节点开始的满足条件的路径的数量。

原创粉丝点击