代码随想录——左叶子之和(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;
    }
}
相关推荐
会游泳的石头几秒前
构建企业级知识库智能问答系统:基于 Java 与 Spring Boot 的轻量实现
java·开发语言·spring boot·ai
Hx_Ma162 分钟前
List 转二维 List
数据结构·windows·list
YuTaoShao3 分钟前
【LeetCode 每日一题】3650. 边反转的最小路径总成本
算法·leetcode·职场和发展
j_xxx404_3 分钟前
C++算法入门:滑动窗口合集(长度最小的子数组|无重复字符的最长字串|)
开发语言·c++·算法
xhbaitxl6 分钟前
算法学习day29-贪心算法
学习·算法·贪心算法
橘颂TA6 分钟前
【剑斩OFFER】算法的暴力美学——力扣 1765 题:地图中的最高点
算法·leetcode·职场和发展·结构与算法
Full Stack Developme8 分钟前
算法与数据结构,到底是怎么节省时间和空间的
数据结构·算法
棱镜Coding9 分钟前
LeetCode-Hot100 28.两数相加
算法·leetcode·职场和发展
m0_561359679 分钟前
C++中的过滤器模式
开发语言·c++·算法
AI科技星11 分钟前
加速运动电荷产生引力场方程求导验证
服务器·人工智能·线性代数·算法·矩阵