代码随想录——左叶子之和(Leetcode404)

题目链接

BFS + 队列

java 复制代码
/**
 * 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) {
        int sum = 0;
        Deque<TreeNode> queue = new LinkedList<TreeNode>();
        if(root == null){
            return sum;
        }
        queue.offer(root);
        while(!queue.isEmpty()){
            int size = queue.size();
            for(int i = 0; i < size; i++){
                TreeNode node = queue.poll();
                if(node.left != null){
                    queue.offer(node.left);
                    // 注意题目要求是求左叶子之和,所以需要判断一下左节点是否为叶子节点
                    if(node.left.left == null && node.left.right == null){
                        sum += node.left.val;
                    }
                }
                if(node.right != null){
                    queue.offer(node.right);
                }
            }
        }
        return sum;
    }
}
相关推荐
曾经的三心草3 分钟前
JavaEE初阶-多线程2
android·java·java-ee
程序猿小白日记7 分钟前
走向智能化:从编程语言看人工智能的未来
leetcode
mit6.82418 分钟前
数位dp|组合数学|差分emplace
算法
2301_7644413321 分钟前
新能源汽车电磁辐射高级预测
python·算法·数学建模·汽车
Keep_Trying_Go28 分钟前
论文Leveraging Unlabeled Data for Crowd Counting by Learning to Rank算法详解
人工智能·pytorch·深度学习·算法·人群计数
仟濹1 小时前
【C/C++】经典高精度算法 5道题 加减乘除「复习」
c语言·c++·算法
Boop_wu1 小时前
[Java EE] 多线程 -- 初阶(5) [线程池和定时器]
java·开发语言
顾安r1 小时前
11.21 脚本 网页优化
linux·前端·javascript·算法·html
WolfGang0073212 小时前
代码随想录算法训练营Day27 | 56.合并区间、738.单调递增的数字、968.监控二叉树
算法
xiaoye-duck2 小时前
数据结构之排序-选择排序&交换排序
数据结构·排序算法