输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
class Solution {
public:
vector<vector<int> > ans;
int arr[10000];
void solve(TreeNode* root,int index,int sum,int expectNumber){
arr[index] = root->val;
if(root->left == NULL && root->right == NULL){
if(sum+root->val == expectNumber){
ans.push_back(vector<int>(arr,arr+index+1));
}
return ;
}
if(root->left)
solve(root->left,index+1,sum+root->val,expectNumber);
if(root->right)
solve(root->right,index+1,sum+root->val,expectNumber);
}
vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
if(root == NULL) return ans; //鲁棒性: 判断二叉树是否为空.
solve(root,0,0,expectNumber);
return ans;
}
};