剑指offer(C++)--二叉树中和为某一值的路径

题目

输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。
路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
(注意: 在返回值的list中,数组长度大的数组靠前)
/*
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> > result;
       vector<int> tmp;
    vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
     
        if(!root) return result;
        tmp.push_back(root->val);
        if(!root->left && !root->right && expectNumber - root->val == 0)
            result.push_back(tmp);
        FindPath(root->left, expectNumber - root->val);
        FindPath(root->right, expectNumber - root->val);
        if(!tmp.empty())
            tmp.pop_back();
        return result;
    }
};
经验分享 程序员 微信小程序 职场和发展