【算法题】二叉树根节点到叶子节点的所有路径和

二叉树根节点到叶子节点的所有路径和

https://www.nowcoder.com/practice/185a87cd29eb42049132aed873273e83?tpId=196&tqId=37049&rp=1&sourceUrl=%2Fexam%2Foj%3FquestionJobId%3D10%26subTabName%3Donline_coding_page&difficulty=undefined&judgeStatus=undefined&tags=&title=

这题说的是计算从根节点到叶子节点的所有路径和,实际上每一条从根节点到叶子节点都构成了一个数字,累加这些数字即可,这些数字只有在叶子节点才能累加,如下图所示。

alt alt

    public int sumNumbers(TreeNode root) {
        return dfs(root, 0);
    }

    private int dfs(TreeNode root, int sum) {
        if (root == null) // 终止条件
            return 0;
        // 计算当前节点的值
        sum = sum * 10 + root.val;
        // 如果当前节点是叶子节点,说明找到了一条完整路径,
        // 直接返回这条路径的值。
        if (root.left == null && root.right == null)
            return sum;
        // 如果当前节点不是叶子结点,返回左右子节点的路径和
        return dfs(root.left, sum) + dfs(root.right, sum);
    }

public:
    int sumNumbers(TreeNode *root) {
        return dfs(root, 0);
    }

    int dfs(TreeNode *root, int sum) {
        if (root == nullptr) // 终止条件
            return 0;
        // 计算当前节点的值
        sum = sum * 10 + root->val;
        // 如果当前节点是叶子节点,说明找到了一条完整路径,
        // 直接返回这条路径的值。
        if (root->left == nullptr && root->right == nullptr)
            return sum;
        // 如果当前节点不是叶子结点,返回左右子节点的路径和
        return dfs(root->left, sum) + dfs(root->right, sum);
    }

各大厂算法面试题已经整理好了,请看这里:《算法专栏》

#笔试#

为了应对春招和秋招找工作,我经过长时间的收集和整理了各大厂的算法面试题,所有的算法题我都已经做了实现,大家可以根据自己需要面试的大厂选择练习即可。适宜人群: 在校生、社招求职者及自学者。

全部评论

相关推荐

被加薪的哈里很优秀:应该继续招人,不会给你留岗位的
点赞 评论 收藏
分享
05-07 17:58
门头沟学院 Java
wuwuwuoow:1.简历字体有些怪怪的,用啥写的? 2.Redis 一主二从为什么能解决双写一致性? 3.乐观锁指的是 SQL 层面的库存判断?比如 stock > 0。个人认为这种不算乐观锁,更像是乐观锁的思想,写 SQL 避免不了悲观锁的 4.奖项证书如果不是 ACM,说实话没什么必要写 5.逻辑过期时间为什么能解决缓存击穿问题?逻辑过期指的是什么 其实也没什么多大要改的。海投吧
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务