题解 | #二叉树根节点到叶子节点和为指定值的路径#

二叉树根节点到叶子节点和为指定值的路径

https://www.nowcoder.com/practice/840dd2dc4fbd4b2199cd48f2dadf930a

解题思路

  • 先序遍历二叉树,先将根节点添加到路径内;
  • 如果当前已经到了叶子结点,并且该条路径的和等于目标值,则将该条路径添加到结果中;
  • 如果当前还没有到叶子结点,则递归遍历当前节点的左子树和右子树;
  • 如果当前到了叶子结点,但是该条路径的和不等于目标值,则将当前值从路径和中减掉,并且弹出该路径。

时间复杂度

  • 时间复杂度为:;
  • 空间复杂度为:

代码

#include <vector>

class Solution {
public:
    vector<vector<int>> res;
    vector<int> tmp;

    void dfs(TreeNode* root, int num, int count)
    {
        if(root == NULL) return;

        tmp.push_back(root->val);
        count += root->val;

        if(root->left == NULL && root->right == NULL)
        {
            if(count == num)
            {
                res.push_back(tmp);
            }
        }
        else 
        {
            dfs(root->left, num, count);
            dfs(root->right, num, count);
        }
        count -= tmp[-1];
        tmp.pop_back();
    }
  
    vector<vector<int> > pathSum(TreeNode* root, int sum) {
        dfs(root, sum, 0);
        return res;
    }
};
全部评论

相关推荐

05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务