二叉树根节点到叶子节点的所有路径和(NC5/考察次数Top53/难度中等)

描述:
给定一个仅包含数字\ 0-9 0−9 的二叉树,每一条从根节点到叶子节点的路径都可以用一个数字表示。
例如根节点到叶子节点的一条路径是1\to 2\to 31→2→3,那么这条路径就用\ 123 123 来代替。
找出根节点到叶子节点的所有路径表示的数字之和
例如:
在这里插入图片描述
这颗二叉树一共有两条路径,
根节点到叶子节点的路径 1\to 21→2 用数字\ 12 12 代替
根节点到叶子节点的路径 1\to 31→3 用数字\ 13 13 代替
所以答案为\ 12+13=25 12+13=25

示例1
输入:
{1,0}
返回值:
10
(题目来自牛客网)

用C++实现如下

class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @return int整型
     */
    int sumNumbers(TreeNode* root) {
        //计算 根节点 到 叶子节点 的所有路径和
        if(!root)
            return 0;
        return preOrder(root,0);           //利用先序遍历求解和公式进行求解;
    }
    
    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);
    }                                      //否则返回左边求解公式和右边求解公式之和
};

纯手撕代码,如果觉得内容不错麻烦点个赞,后面陆续配上Top100算法题通俗易懂的讲解视频,可以花两个月时间完全掌握,进大厂不是梦,转行狗亲测!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值