当前位置: 首页 > news >正文

代码随想录刷题day44|(二叉树篇)404.左叶子之和

目录

一、二叉树理论知识

二、题目思路

三、相关算法题目

四、总结


一、二叉树理论知识

详见:代码随想录刷题day34|(二叉树篇)二叉树的递归遍历-CSDN博客

二、题目思路

迭代法:层序遍历

层序遍历每一层节点,队列存储待处理节点,单独处理左叶子节点,如果是左叶子节点,就将节点值加和,否则只入队,不加和;

易错点:注意求的是左叶子节点,两个条件:左节点+叶子节点,首先判断是否为左节点,接着还要保证是叶子节点(左右子树均为空)

递归法:

单层递归逻辑核心:判断当前节点的左子节点是否为叶子节点,如果是,则累加其值,否则,继续递归遍历左子树和右子树;递归的终止条件是当前节点为空;

可以前序遍历、后序遍历、中序遍历;

三、相关算法题目

404.左叶子节点

迭代法:

class Solution {
    public int sumOfLeftLeaves(TreeNode root) {
        //迭代法:层序遍历
        Deque<TreeNode> deque = new ArrayDeque<>();
        if(root == null) return 0;
        deque.offer(root);
        int sum = 0;
        while(!deque.isEmpty()){
            TreeNode node = deque.poll();
            if(node.left != null){
                //保证是左节点
                deque.offer(node.left);
                if(node.left.left == null && node.left.right == null){
                    //保证是左叶子节点
                    sum = sum + node.left.val;
                }
            }
            if(node.right != null){
                deque.offer(node.right);
            }
        }
        return sum;
    }
}

 递归法:

class Solution {
    public int sumOfLeftLeaves(TreeNode root) {
        //递归法
        return getSum(root);
    }
    public int getSum(TreeNode node){
        int sum = 0;
        if(node == null) return 0;
        //单层递归逻辑
        if(node.left != null && node.left.left == null && node.left.right == null){
            sum = sum + node.left.val;
        }
        sum += getSum(node.left);
        sum += getSum(node.right);
        return sum;
    }
}

四、总结

1.迭代法注意判断是否为叶子节点;

2.递归法的单层逻辑;

相关文章:

  • LInux基础--apache部署网站
  • Adobe Photoshop下载安装和使用教程
  • 【GPT入门】第18课 langchain介绍与API初步体验
  • 初阶数据结构(C语言实现)——5.3 堆的应用(1)——堆排序
  • Java Web大文件下载:从卡顿到丝滑的优化之旅
  • Babylon.js的Shader入门一(从只有一个颜色的Shader说起)
  • 关于Go中使用goroutine协程实现的算法
  • 前端面试:axios 请求的底层依赖是什么?
  • 服务器上的nginx因漏洞扫描需要升级
  • 数据结构(排序)
  • 【MySQL基础-3.2】MySQL DDL 语句详解:数据表操作篇
  • 扩展学习 | DeepSeek R1本地部署指南
  • Flutter桌面开发(三、widget布局与表单)
  • Qt的QToolButton设置弹出QMenu下拉菜单
  • 如何实现Spring Boot与Oracle数据库的完美对接?
  • 2025-03-12 学习记录--C/C++-PTA 习题8-4 报数
  • 12. Pandas :使用pandas读Excel文件的常用方法
  • WPF 制作机械手动画
  • 在线教育网站项目第三步 :通过wsl 2 安装ubuntu24.04
  • nginx中proxy_pass和root的区别
  • 第十届青春文学奖揭晓,梁晓声获特别奖
  • 俄外长与美国务卿通电话,讨论俄美接触等问题
  • 首届中国人文学科年度发展大会启幕,共话AI时代人文使命
  • 美联储计划裁员约10%
  • 上海:到2027年,实现近海航线及重点海域5G网络高质量覆盖
  • 又一例!易方达基金张坤卸任副总职务,将专注于投资管理工作