二叉树中和为某一值的路径

来源:互联网 发布:网络社交的利与弊英语 编辑:程序博客网 时间:2024/06/16 22:41

题目描述

输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
思路:递归,从根节点开始遍历左右子节点,判断和是否等于根节点,若不等,减去根节点值,继续遍历。

/*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<int > path;    vector<vector<int> > FindPath(TreeNode* root, int sum) {        //判断根是否为空        if(root == NULL)            return res;        path.push_back(root->val);        //判断根节点是否等于和        if(!root->left && !root->right && sum == root->val)            res.push_back(path);        //不相等,继续遍历        else{            if(root->left)                FindPath(root->left, sum - root->val);            if(root->right)                FindPath(root->right, sum - root->val);        }        path.pop_back();        return res;    }};