Leetcode刷题笔记 404.左叶子之和

404. 左叶子之和


知识点:二叉树
时间:2020年9月19日
题目链接: https://leetcode-cn.com/problems/sum-of-left-leaves/

题目
计算给定二叉树的所有左叶子之和。

示例1
输入

    3
   / \
  9  20
    /  \
   15   7

输出
24

解法:

  1. 注意回溯退出的条件,当空指针时为0
  2. 如果该节点的左节点是叶节点(无儿子节点),直接加上左边叶节点的值,防止这个节点在后续遍历的时候漏了
  3. 左右节点分别回溯

代码

#include <stdio.h>
#include <iostream>
using namespace std;
struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution {
public:
    int sumOfLeftLeaves(TreeNode* root) {
        int ans = 0;
        if(root==nullptr){return 0;}
        if(root->left!=nullptr && root->left->left==nullptr && root->left->right==nullptr)
            ans += root->left->val;
        return ans+sumOfLeftLeaves(root->left)+sumOfLeftLeaves(root->right);
    }
};
int main()
{
    TreeNode root(3);
    TreeNode node1(9);TreeNode node2(20);
    TreeNode node3(15);TreeNode node4(7);
    root.left = &node1;root.right=&node2;
    node2.left = &node3;node2.right = &node4;
    Solution s;
    int ans =s.sumOfLeftLeaves(&root);
    cout<<ans;
    return 0;
}



今天也是爱zz的一天哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值