标签: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()
。
标签:tree 代码 图片 一个 etc c99 res 就是 思想
原文地址:https://www.cnblogs.com/tmpUser/p/14458818.html