首页 > 其他 > 详细

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

时间:2021-02-28 15:30:08      阅读:26      评论:0      收藏:0      [点我收藏+]

问题

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

示例

技术分享图片

解答

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】二叉树中和为某一值的路径

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!