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

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

http://www.nowcoder.com/questionTerminal/185a87cd29eb42049132aed873273e83

毋庸置疑,用先序遍历。
但是实现起来却有点问题。
刚开始我用一个string类型变量保存路径上所有数字,用一个int &sum保存结果,但是只通过了95%。
后面发现其实可以直接通过一个数字传递路径上数字和,遇到叶节点返回左右子树相加的结果即可。

class Solution {
public:
    /**
     *
     * @param root TreeNode类
     * @return int整型
     */
    int sumNumbers(TreeNode* root) {
        // write code here
        if(!root) return 0;
        int sum = 0;
        return preOrder(root, sum);
    }

    int preOrder(TreeNode *root, int sum) {
        if (!root) return 0;
        sum = 10 * sum + root->val;
        if (!root->left && !root->right) return sum;
        return preOrder(root->left, sum) + preOrder(root->right, sum);
    }
};
刷遍天下无敌手 文章被收录于专栏

秋招刷题历程

全部评论
第十行的作用是啥?大佬可以解答一下嘛,谢谢
点赞 回复 分享
发布于 2025-04-08 19:30 河南
强的,想用string表示sum,发现 stoi() 在牛客用不了。。还是老实用 int 了
点赞 回复 分享
发布于 2022-06-06 09:54
点赞 回复 分享
发布于 2022-05-18 20:20

相关推荐

好奇的伊登准备进厂:找了两个多月沟通六千多,不到十个面试至今仍未找到实习,看完你还想坚持下去吗
点赞 评论 收藏
分享
评论
35
9
分享

创作者周榜

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