题目描述:

输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。

路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/
class Solution {
public:
    vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
        int currentNumber = 0;
        if(root) find(root, expectNumber, currentNumber);
        return result;
    }
private:
    vector<vector<int> > result;
    vector<int> path;
    void find(TreeNode *root, int expectNumber, int currentNumber){
        currentNumber += root->val;
        path.push_back(root->val);

        if(currentNumber == expectNumber && !root->left && !root->right){
            result.push_back(path);
        }

        if(root->left != NULL)
            find(root->left, expectNumber, currentNumber);
        if(root->right != NULL)
            find(root->right, expectNumber, currentNumber);

        path.pop_back();
    }
};

如有建议或其他问题,可随时给我们留言。或者到以下链接:

https://github.com/gaobaoru/code_day

Star/Fork/Push 您的代码,开源仓库需要您的贡献。

请查看Coding 题目网址和收藏Accepted代码仓库,进行coding!!!