链接:https://www.nowcoder.com/questionTerminal/b736e784e3e34731af99065031301bca
来源:牛客网
[编程题]二叉树中和为某一值的路径
- 热度指数:269390 时间限制:1秒 空间限制:32768K
- 算法知识视频讲解
输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的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> > res;
vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
int path[100];
if(root) find_(0,root,path,0,expectNumber);
return res;
}
void find_(int sum,TreeNode* tree,int path[],int deep,int num){
sum+=tree->val;
path[deep]=tree->val;
if(tree->left==NULL&&tree->right==NULL){
if(sum==num){
vector<int>varr(path+0,path+deep+1);
res.push_back(varr);
}
}
if(tree->left!=NULL)find_(sum,tree->left,path,deep+1,num);
if(tree->right!=NULL)find_(sum,tree->right,path,deep+1,num);
return ;
}
};