输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)

 

```c++

 vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
        vector<vector<int> > result;
        vector<int> trace;
        if(root)
            DFS(root,expectNumber,result,trace);
        return result;
    }
    void DFS(TreeNode* root,int num,vector<vector<int> > &result,vector<int> &trace){
        trace.push_back(root->val);
        if(!root->left&&!root->right)//叶子结点,题目中路径的定义。。
            if(num==root->val)  //find 路径
                result.push_back(trace);//压入一维 vector
        if(root->left)
            DFS(root->left,num-root->val,result,trace);
        if(root->right)
            DFS(root->right,num-root->val,result,trace);
        //////////////////////回退。。。
        trace.pop_back();// pop_back 是从vecotr弹出最后压入的那个数据
    }

```