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

【剑指Offer-34】二叉树中和为某一值的路径

时间:2021-03-01 13:45:50      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:tree   代码   图片   一个   etc   c99   res   就是   思想   

问题

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

示例

技术图片

解答

class Solution {
public:
    vector<vector<int>> pathSum(TreeNode* root, int sum) {
        recur(root, sum);
        return res;
    }
private:
    vector<vector<int>> res;
    vector<int> ans;
    void recur(TreeNode* root, int sum) {
        if (!root) return;
        sum -= root->val;
        ans.push_back(root->val); // 存储路径
        if (!root->left && !root->right && !sum) res.push_back(ans); // 满足叶子节点条件
        recur(root->left, sum); // 前序遍历
        recur(root->right, sum);
        ans.pop_back(); // 回溯
    }
};

重点思路

很典型的一道二叉树路径搜索问题,基本思想是前序遍历+回溯。需要注意的是,回溯过程中需要一个容器存储路径,在回溯返回时需要将该节点删除,也就是代码中的pop_back()

【剑指Offer-34】二叉树中和为某一值的路径

标签:tree   代码   图片   一个   etc   c99   res   就是   思想   

原文地址:https://www.cnblogs.com/tmpUser/p/14458818.html

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