描述:输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。


这道题想了好久有思路,但是写不出代码,之后借鉴了多位老铁的思路以及代码,我才勉勉强强做了出来,对于在树这方面的知识点属实欠缺不少。
大概解题是思路如下:
1、写一个DFS结构体,在定义两个全局变量,使用vector容器用来存储树的结点值和路径,通过递归排序,输出树的结点值和路径。
2、最后在判断,结点是否为空,为空则输出结点值。


具体代码如下:
class Solution {
public:
vector<vector<int>>;
vector<int>;
void DFS(TreeNode root,int sum,vector<int> &path,vector<vector<int>> &ret)
{
path.push_back(root->val);
if(sum==root->val&&!root->left&&!root->right)
{
ret.push_back(path);
}
if(root->left)
{
DFS(root->left,sum-root->val,path,ret);
}
if(root->right)
{
DFS(root->right,sum-root->val,path,ret);
}
path.pop_back();
}
vector<vector<int> > FindPath(TreeNode</int></int></int>
root,int expectNumber) {
vector<vector<int>> ret;
vector<int> path;
if(!root)
{
return ret;
}
DFS(root,expectNumber,path,ret);
return ret;
}
};</int></int></int></int>