剑指offer-二叉树中和为某一值的路径

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


难点坑点
理解题意
理解题意
理解题意
注意递归方法


/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};*/
class Solution {
public:
    int exnum;
    vector<vector<int> > val;
    vector<int> linenum;
    vector<vector<int> > FindPath(TreeNode* root,int expectNumber) {
        exnum=expectNumber;
        findanswer(root,0);
        return val;
    }
    void findanswer(TreeNode* node, int sum)
    {
        if(node!=nullptr ){
            linenum.push_back(node->val);
            if(node->left==nullptr && node->right==nullptr && (sum+node->val)==exnum)
                val.push_back(linenum);
            findanswer(node->left,sum+node->val);
            findanswer(node->right,sum+node->val);
            linenum.pop_back();
        }
    }
};

推荐阅读更多精彩内容