题目描述
输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)
C++
/*
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) {
if (root)
find(root, expectNumber);
return all;
}
void find(TreeNode *node, int target)
{
temp.push_back(node -> val);
//若为叶子结点
if (!node -> left && !node -> right)
{
if (target == node -> val)
all.push_back(temp);
}
else
{
//减去对应的值
if (node -> left) find(node -> left, target - node -> val);
if (node -> right) find(node -> right, target - node -> val);
}
if (!temp.empty())
temp.pop_back();
}
private:
vector<vector<int> >all; //存储所有路径
vector<int>temp; //存储当前路径
};