二叉树根到叶子路径和为指定数的路径

二叉树根节点到叶子节点和为指定值的路径

http://www.nowcoder.com/questionTerminal/840dd2dc4fbd4b2199cd48f2dadf930a

//深度优先遍历,或者说先根遍历。保存路径上的点,到达叶子结点时,判断和是不是sum.

/**
 * struct TreeNode {
 *    int val;
 *    struct TreeNode *left;
 *    struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @param sum int整型 
     * @return int整型vector<vector<>>
     */
    vector<vector<int> > pathSum(TreeNode* root, int sum) {
        // write code here
        vector<int> cur;
        int curSum = 0;
        vector<vector<int>> ans;
        dfs(root, sum, curSum, cur, ans);
        return ans;
    }

    void dfs(TreeNode *root, int sum, int curSum, vector<int> &cur, vector<vector<int>> &ans){
        if(root == nullptr) {
            return;
        }
        cur.push_back(root->val);
        //预先计算好了sum
        if(sum == curSum+root->val && root->left == nullptr && root->right==nullptr){
            ans.push_back(cur);
            cur.pop_back();
            return;
        }
        dfs(root->left, sum, curSum + root->val, cur, ans);
        dfs(root->right, sum, curSum + root->val, cur, ans);
        cur.pop_back();
    }
};
全部评论

相关推荐

重生我想学测开:嵌入式的问题,我准备入行京东外卖了
点赞 评论 收藏
分享
下个早班:秒挂就是不缺人
点赞 评论 收藏
分享
06-26 18:30
门头沟学院 Java
据说名字越长别人越关...:你问问这里面有多少是正经候选人,而不是乱打招呼的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务