首页 > 代码库 > Path Sum II

Path Sum II

Given a binary tree and a sum, find all root-to-leaf paths where each path‘s sum equals the given sum.

For example:
Given the below binary tree and sum = 22,

              5             /             4   8           /   /           11  13  4         /  \    /         7    2  5   1

return

[   [5,4,11,2],   [5,8,4,5]]
/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    vector<vector<int> > pathSum(TreeNode *root, int sum) {        vector<vector<int> > ans;        vector<int> arr;        if(root) iter(root, sum, 0, arr, ans);        return ans;    }    void iter(TreeNode *root, int sum, int tmpsum, vector<int> arr, vector<vector<int> > &ans){        if(root->left==NULL && root->right==NULL){            tmpsum += root->val;            if(tmpsum == sum){                arr.push_back(root->val);                ans.push_back(arr);                return;            }            return;        }        vector<int> tmp(arr);        tmp.push_back(root->val);        tmpsum += root->val;        if(root->left){            iter(root->left, sum, tmpsum, tmp, ans);        }        if(root->right){            iter(root->right, sum, tmpsum, tmp, ans);        }    }};

 

Path Sum II