剑指Offer系列-面试题25:二叉树中和为某一值的路径

时间:2021-03-13 20:33:41

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

思路:

代码:

vector<vector<int>> result;
vector<int> tmp;
vector<vector<int>> FindPath(TreeNode* root, int expectNumber)
{
    if(root == NULL)
        return result;
    tmp.push_back(root->val);
    expectNumber -= root->val;
    /// 如果找到了最终结果,就不继续往下找了,直接返回上一层
    if(expectNumber == 0 && !root->left && !root->right)
    {
        result.push_back(tmp);
        tmp.pop_back();
        return result;
    }
    /// 如果小于零,就不遍历子树了
    if(expectNumber < 0)
    {
        tmp.pop_back();
        return result;
    }
    FindPath(root->left, expectNumber);
    FindPath(root->right, expectNumber);
    tmp.pop_back();
    return result;
}