( “树” 之 DFS) 404. 左叶子之和 ——【Leetcode每日一题】

news2025/6/20 20:53:53

404. 左叶子之和

给定二叉树的根节点 root ,返回所有左叶子之和。

示例 1:

在这里插入图片描述

输入: root = [3,9,20,null,null,15,7]
输出: 24
解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24

示例 2:

在这里插入图片描述

输入: root = [1]
输出: 0

提示:

  • 节点数在 [1, 1000] 范围内
  • -1000 <= Node.val <= 1000

思路:DFS

因为我们求的是左叶子节点之和,所以我们要先判断哪个是左叶子节点;

  • 题目中的示例2表明只有根节点,虽然也是叶子节点,但不算左叶子节点;
  • 所以左叶子节点的条件就是在根节点root节点左边,且是叶子节点,这样我们就能判断左叶子节点了
  • 只需要取出左叶子节点的val值,累加即可;
  • 如果不是左叶子节点,则向下递归。

代码:(Java、C++)

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) {
        if(root == null) return 0;
        int ans = 0;
        if(root.left != null && root.left.left == null && root.left.right == null){
            ans = root.left.val;
        }else{
            ans = sumOfLeftLeaves(root.left);
        }
        return  ans + sumOfLeftLeaves(root.right);
    }
}

C++

/**
 * 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;
        int ans = 0;
        if(root.left != null && root.left.left == null && root.left.right == null){
            ans = root.left.val;
        }else{
            ans = sumOfLeftLeaves(root.left);
        }
        return  ans + sumOfLeftLeaves(root.right);
    }
}

运行结果:

在这里插入图片描述

复杂度分析:

  • 时间复杂度 O ( n ) O(n) O(n),其中 n 是树中的节点个数
  • 空间复杂度 O ( n ) O(n) O(n)。空间复杂度与深度优先搜索使用的栈的最大深度相关。在最坏的情况下,树呈现链式结构,深度为 n ,对应的空间复杂度也为 O ( n ) O(n) O(n)

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我 leetCode专栏,每日更新!

注: 如有不足,欢迎指正!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/411459.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

当ChatGPT续写《红楼梦》,能替代原著吗?

来源: 清华大学出版社 近段时间&#xff0c;人工智能聊天机器人ChatGPT火爆网络&#xff0c;“AI写作是否会让文字工作者被替代&#xff1f;”成为人们关注并持续讨论的话题。 闲聊、问答、解题、写代码、写诗、创作小说&#xff0c; 连续回答&#xff0c;不断纠错&#xff0c…

window下面安装phpstudy进行PHP开发

文章目录前言在这里插入图片描述一、安装步骤1.1 下载PHPStudy软件1.2 安装PHPStudy软件1.3 启动PHPStudy软件1.4 设置PHPStudy1.5 安装扩展1.6 启动服务总结前言 php的集成开发环境比较多&#xff0c;有wamp server&#xff0c;xmapp&#xff0c;phpstudy等。经过这些年的体验…

【李宏毅】深度学习——HW5-Machine Translation

Machine Translation 1. Goal 给定一段英文&#xff0c;翻译成繁体中文 2. Introduction 2.1 Dataset training dataset TED2020: TED talks with transcriptions translated by a global community of volunteers to more than 100 language.we will use (en, zh-tw) alig…

身临其境数字世界:探索VR全景元宇宙展厅

随着科技的不断发展&#xff0c;虚拟现实技术已经成为我们生活中的一部分。VR全景元宇宙展厅作为其中的一种形式&#xff0c;正越来越受欢迎。在这里&#xff0c;您可以探索未知的世界&#xff0c;体验全新的视觉和感官体验。 一、VR全景元宇宙展厅的概述 VR全景元宇宙展厅是一…

Kafka---kafka概述和kafka基础架构

kafka概述和kafka基础架构 文章目录kafka概述和kafka基础架构Kafka定义消息队列传统消息队列应用场景缓存/消峰解耦异步通信消息队列的两种模式点对点模式发布/订阅模式kafka基础架构producerConsumerConsumer Group&#xff08;CG&#xff09;BrokerTopicPartitionReplicaLead…

基于html+css的盒子内容旋转180度

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

如何学习python自动化测试,这是我见过最完整的教程了

目录 前言 一、 学习Python基础知识 二、 学习自动化测试框架 三、 学习Web自动化测试 四、 学习移动端自动化测试 五、 学习版本控制工具 六、 学习测试管理工具 七、 实践总结 前言 Python自动化测试是目前比较流行的一种自动化测试技术。它具有开发效率高、可扩展性…

《c++入门》-超级详细讲解

本文主要介绍c的一些入门知识&#xff0c;为后面打基础 文章目录前言1、C关键字(C98)2、命名空间2.1 命名空间定义2.2 命名空间使用1.指定命名空间2.全局展开&#xff08;一般情况&#xff0c;不建议全局展开&#xff09;3.部分展开3、C输入&输出4、缺省参数4.1 缺省参数定…

人工智能(Pytorch)搭建T5模型,真正跑通T5模型,用T5模型生成数字加减结果

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能(Pytorch)搭建T5模型,真正跑通T5模型,用T5模型生成数字加减结果。T5&#xff08;Text-to-Text Transfer Transformer&#xff09;是一种由Google Brain团队在2019年提出的自然语言处理模型。T5模型基于Tran…

商办楼宇租赁过程中的风险与管控

在商办地产租赁市场持续高量供应、越来越多楼盘趋向同质化的背景下&#xff0c;商办地产经营需更懂得审时度势&#xff0c;在租赁经营过程中合理运用数字化管理识别、规避风险&#xff0c;针对有风险的经营及时调整管控&#xff0c;提升识别及防范风险的意识和能力&#xff0c;…

数据结构:链表oj下

21. 合并两个有序链表 CM11 链表分割 不加36行代码会造成死循环&#xff08;形成环&#xff09; OR36 链表的回文结构 找到中间节点&#xff0c;再把后面的逆置 走完一个链表while(tail) 找链表的最后一个节点while(tail->next) 160. 相交链表 找到AB链表的尾节点&#x…

Python 小型项目大全 6~10

六、凯撒密码 原文&#xff1a;http://inventwithpython.com/bigbookpython/project6.html 凯撒密码是朱利叶斯凯撒使用的一种古老的加密算法。它通过将字母在字母表中移动一定的位置来加密字母。我们称移位的长度为密钥。比如&#xff0c;如果密钥是 3&#xff0c;那么A变成D&…

Linux-初学者系列——篇幅2_系统命令界面

系统命令界面-目录一、命令行提示符1、提示符2、提示符组成3、提示符修改二、系统命令语法规范三、系统命令行常用快捷键1、常用快捷键2、移动光标快捷键3、剪切、粘贴、清楚快捷键4、系统管理控制快捷键5、重复执行命令快捷键上篇: Linux-初学者系列——篇幅1_文件管理命令 一…

Python 小型项目大全 36~40

三十六、沙漏 原文&#xff1a;http://inventwithpython.com/bigbookpython/project36.html 这个可视化程序有一个粗糙的物理引擎&#xff0c;模拟沙子通过沙漏的小孔落下。沙子堆积在沙漏的下半部分&#xff1b;然后把沙漏翻过来&#xff0c;重复这个过程。 运行示例 图 36-…

手写vuex4源码(八)插件机制实现

一、插件的使用 Vuex 不仅提供了全局状态管理能力&#xff0c;还进一步提供了插件机制&#xff0c;便于开发者对 Vuex 插件进行增强&#xff1b; Vuex 插件的使用方式&#xff1a;通过 Store 类提供的 plugin 数组进行 Vuex 插件注册&#xff1a; export default createStor…

ModuleNotFoundError:No module named “te_fusion“

Asecend Tensor Compiler简称ATC&#xff0c;昇腾张量编译器&#xff0c;主要是将开源框架的网络模型或Ascend IR定义的单算子描述文件(json格式)转换为昇腾AI处理器支持的om格式 场景描述:ONNXRuntime调用CANN后端执行时&#xff0c;报了没有找到te_fusion的error&#xff0c…

多项式特征应用案例

多项式特征应用案例 描述 对于线性模型而言&#xff0c;扩充数据的特征&#xff08;即对原特征进行计算&#xff0c;增加新的特征列&#xff09;通常是提升模型表现的可选方法&#xff0c;Scikit-learn提供了PolynomialFeatures类来增加多项式特征&#xff08;polynomial fea…

JavaScript【一】JavaScript变量与数据类型

文章目录&#x1f31f;前言&#x1f31f;变量&#x1f31f; 变量是什么&#xff1f;&#x1f31f; 变量提升&#x1f31f; 声明变量&#x1f31f; JavaScript有三种声明方式&#x1f31f; 命名规范&#x1f31f; 注意&#x1f31f;数据类型以及运算&#x1f31f; 检测变量数据类…

【Linux】System V IPC-命名管道共享内存消息队列

System V IPC-命名管道&共享内存&消息队列命名管道共享内存创建共享内存附加和分离共享内存消息队列消息队列的接口命名管道 使用mkfifo命令&#xff0c;创建一个命名管道&#xff0c;通过ll可以查看当前命名管道的类型 p类型&#xff0c;也就是pipe管道类型。 之前我…

Docker镜像之Docker Compose讲解

文章目录1 docker-compose1.1 compose编排工具简介1.2 安装docker-compose1.3 编排启动镜像1.4 haproxy代理后端docker容器1.5 安装socat 直接操作socket控制haproxy1.6 compose中yml 配置指令参考1.6.1 简单命令1.6.2 build1.6.3 depends_on1.6.4 deploy1.6.5 logging1.6.6 ne…