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

来源:互联网 发布:电脑软件推广 编辑:程序博客网 时间:2024/06/08 09:51

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

/*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> > FindPath(TreeNode* root,int expectNumber) {        if(root==NULL) return res;        find(root,expectNumber);        return res;    }    void find(TreeNode* node,int number){        temp.push_back(node->val);//        if(number==node->val && node->left==NULL && node->right==nullptr)//number表示还剩的数值,当剩下的数值刚好等于一个节点值,而这个节点又是叶子节点,则res插入最后一个节点            res.push_back(temp);        else//当还不满足条件时            {            if(node->left) find(node->left,number-node->val);//对左子树递归调用,number减去当前节点的值            if(node->right) find(node->right,number-node->val);        }        temp.pop_back();    }private:        vector<vector<int>> res;//用来记录路径        vector<int> temp;//temp当做一个栈,临时记录所有的路径,包括合适的不合适的,不合适的删除,合适的返回};
原创粉丝点击