34. 二叉树中和为某一值的路径
1. 描述
输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。
2. 提示
- 节点总数 <= 10000
3. 题解
n 是 i_root 中的节点数目
时间复杂度: O(n)
空间复杂度: O(n)
class Solution
{
private:
vector<vector<int>> paths;
void getPaths(TreeNode *i_root, vector<int> &m_path, int target)
{
target -= i_root->val;
m_path.push_back(i_root->val);
if(!i_root->left && !i_root->right && target == 0)
paths.push_back(m_path);
if(i_root->left) getPaths(i_root->left, m_path, target);
if(i_root->right) getPaths(i_root->right, m_path, target);
m_path.pop_back();
target += i_root->val;
}
public:
// vector<vector<int>> pathSum(TreeNode* root, int sum)
vector<vector<int>> pathSum(TreeNode *i_root, int target)
{
if(i_root)
{
vector<int> path;
getPaths(i_root, path, target);
}
return paths;
}
};