【LeetCode】404. 左叶子之和

简介: 【LeetCode】404. 左叶子之和

算法现在就是大厂、外企的硬指标。开发、测开、测试,想往上总是绕不开的。


题目描述


难度:【简单】 标签:【二叉树】


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


题目地址:https://leetcode-cn.com/problems/sum-of-left-leaves/


示例


3
   / \
  9  20
    /  \
   15   7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24


解题


首先要明确这个叶子结点,遍历节点的时候需要判断这个节点是否为叶子节点。


这个需要一个辅助函数,通过判断该节点是否存在左右孩子节点来实现。


按照框架套路,考虑当前节点做的事情,然后把剩下的交给递归。


那么对当前节点来说,如果它的左孩子节点是一个叶子节点,那么就累加这个节点的值。


如果不是,则继续递归左右孩子,并相加最终的结果。


/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public int sumOfLeftLeaves(TreeNode root) {
        if (root == null) {
            return 0;
        }
        // 当前节点左孩子,如果是叶子节点,则进行累加。继续递归右孩子后的左节点
        if (isLeaf(root.left)) {
            return root.left.val + sumOfLeftLeaves(root.right);
        }
        return sumOfLeftLeaves(root.left) + sumOfLeftLeaves(root.right);
    }
    // 辅助函数,判断是否叶子节点
    private boolean isLeaf(TreeNode node) {
        if (node == null) {
            return false;
        }
        return node.left == null && node.right == null;
    }
}
相关文章
|
6月前
|
Java C++ Python
leetcode-404:左叶子之和
leetcode-404:左叶子之和
36 0
【Leetcode -872.叶子相似的树 -993.二叉树的堂兄弟节点】
【Leetcode -872.叶子相似的树 -993.二叉树的堂兄弟节点】
38 0
|
6月前
leetcode404左叶子之和刷题打卡
leetcode404左叶子之和刷题打卡
26 0
|
算法
代码随想录算法训练营第十七天 | LeetCode 110. 平衡二叉树、257. 二叉树的所有路径、404. 左叶子之和
代码随想录算法训练营第十七天 | LeetCode 110. 平衡二叉树、257. 二叉树的所有路径、404. 左叶子之和
42 0
|
算法
LeetCode每日1题--左叶子之和
LeetCode每日1题--左叶子之和
88 0
leetcode 404 左叶子之和
leetcode 404 左叶子之和
74 0
leetcode 404 左叶子之和
代码随想录刷题|LeetCode 110.平衡二叉树 257.二叉树的所有路径 404.左叶子之和
代码随想录刷题|LeetCode 110.平衡二叉树 257.二叉树的所有路径 404.左叶子之和
|
算法 Java Python
ACM 选手图解 LeetCode 左叶子之和
ACM 选手图解 LeetCode 左叶子之和
ACM 选手图解 LeetCode 左叶子之和
|
算法
​LeetCode刷题实战129:求根到叶子节点数字之和
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
102 0
​LeetCode刷题实战129:求根到叶子节点数字之和
|
算法
​LeetCode刷题实战404:左叶子之和
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
126 0