Leetcode题库404. 左叶子之和(递归 c实现)

本文探讨了LeetCode上一个关于计算二叉树左叶子之和的代码实现,作者指出其代码在特定情况下无法通过官方测试,可能由于对题目理解有误。文章详细阐述了函数作用,递归式以及编程思路,并提供了代码实现。作者的解决方案在特定二叉树结构下得到的结果与官方答案不同,引发思考。
摘要由CSDN通过智能技术生成

文章目录

思路

0、提示
下面的代码在leetcode上通不过
原因是这样一棵树:

官方给出的答案:4
我给出的答案:6
也许是我对题目理解有问题,或者说[1,2,3,4,5]表示的二叉树不是上面那一棵,我的代码是2+4

1、函数作用
sumOfLeftLeaves函数的作用:给定节点返回以该节点为顶点的二叉树的左叶子之和

2、递归式
root左叶子之和=root左节点val+其左节点为顶点的二叉树的左叶子之和+其右节点为顶点的二叉树的左叶子之和

3、编程思路
若当前节点为空,则返回0
若当前节点非空则返回当前左节点val+当前左节点为顶点的二叉树的左叶子之和+当前右节点为顶点的二叉树的左叶子之和

代码

int sumOfLeftLeaves(struct TreeNode* root){
    int ret=0;
    if(root==NULL) return ret; 
    if(root->left!=NULL) ret=root->left->val;
    ret+=sumOfLeftLeaves(root->left);
    ret+=sumOfLeftLeaves(root->right);
    return ret;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值