码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-03-21 11:42:29      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:return   深度优先遍历   off   tree   剑指offer   二叉树   就是   class   target   

0 题目

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

1 分析

深度优先遍历+回溯.

出点就是,当target==0,且节点没有子树的时候。

    vector<vector<int>> FindPath(TreeNode *root, int target)
    {
        vector<vector<int>> ret;
        vector<int> tmp;
        aux(root, target, tmp, ret);
        return ret;
    }

    void aux(TreeNode *root, int target, vector<int> &tmp, vector<vector<int>> &ret)
    {
        if (root != nullptr)
        {
            tmp.push_back(root->val);

            if (target - root->val == 0 && root->left == nullptr && root->right == nullptr)
            {
                ret.push_back(tmp);
                // 这里pop的原因在于,下面需要return ,如果不pop会影响和偶棉的结果
                tmp.pop_back();
                return;
            }

            aux(root->left, target - root->val, tmp, ret);
            aux(root->right, target - root->val, tmp, ret);
            tmp.pop_back();
        }
    }

  

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

标签:return   深度优先遍历   off   tree   剑指offer   二叉树   就是   class   target   

原文地址:https://www.cnblogs.com/perfy576/p/8615086.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!