二叉树题目:左叶子之和
文章目录
- 题目
- 标题和出处
- 难度
- 题目描述
- 要求
- 示例
- 数据范围
- 解法一
- 思路和算法
- 代码
- 复杂度分析
- 解法二
- 思路和算法
- 代码
- 复杂度分析
题目
标题和出处
标题:左叶子之和
出处:404. 左叶子之和
难度
3 级
题目描述
要求
给你二叉树的根结点 root \texttt{root} root,返回所有左叶子之和。
示例
示例 1:

输入: root = [3,9,20,null,null,15,7] \texttt{root = [3,9,20,null,null,15,7]} root = [3,9,20,null,null,15,7]
输出: 24 \texttt{24} 24
解释:二叉树中有两个左叶子,结点值分别是 9 \texttt{9} 9 和 15 \texttt{15} 15。
示例 2:
输入: root = [1] \texttt{root = [1]} root = [1]
输出: 0 \texttt{0} 0
数据范围
- 树中结点数目在范围 [1, 1000] \texttt{[1, 1000]} [1, 1000] 内
- -1000 ≤ Node.val ≤ 1000 \texttt{-1000} \le \texttt{Node.val} \le \texttt{1000} -1000≤Node.val≤1000
解法一
思路和算法
为了计算左叶子之和,需要找到二叉树中的所有是左子结点的叶结点并计算这些结点之和。可以使用深度优先搜索实现。
从根结点开始遍历二叉树,对于每个结点,首先判断其左右子结点是否为空,然后对非空子结点执行如下操作。
-
如果左子结点不为空,当左子结点是叶结点时将左子结点的值加到左叶子之和,当左子结点不是叶结点时在左子树中继续遍历。
-
如果右子结点不为空且不是叶结点,则在右子树中继续遍历。
上述过程是一个递归的过程,递归的终止条件是当前结点为叶结点或者当前结点的非空子结点都为叶结点,其余情况都会调用递归。由于只有在访问到的结点的左子结点是叶结点的情况下才会将左子结点值加到左叶子之和,因此可以确保每个左叶子都被计算一次且其他结点都不会被计算。
代码
class Solution {public int sumOfLeftLeaves(TreeNode root) {int sum = 0;if (root.left != null) {if (isLeaf(root.left)) {sum += root.left.val;} else {sum += sumOfLeftLeaves(root.left);}}if (root.right != null && !isLeaf(root.right)) {sum += sumOfLeftLeaves(root.right);}return sum;}public boolean isLeaf(TreeNode node) {return node.left == null && node.right == null;}
}
复杂度分析
-
时间复杂度: O ( n ) O(n) O(n),其中 n n n 是二叉树的结点数。每个结点都被访问一次。
-
空间复杂度: O ( n ) O(n) O(n),其中 n n n 是二叉树的结点数。空间复杂度主要是递归调用的栈空间,取决于二叉树的高度,最坏情况下二叉树的高度是 O ( n ) O(n) O(n)。
解法二
思路和算法
也可以使用广度优先搜索计算左叶子之和。
广度优先搜索需要使用队列存储待访问的结点,初始时将根结点入队列。每次将一个结点出队列,首先判断其左右子结点是否为空,然后对非空子结点执行如下操作。
-
如果左子结点不为空,当左子结点是叶结点时将左子结点的值加到左叶子之和,当左子结点不是叶结点时将左子结点入队列。
-
如果右子结点不为空且不是叶结点,则将右子结点入队列。
当队列为空时遍历结束,此时即可得到左叶子之和。
由于只有在访问到的结点的左子结点是叶结点的情况下才会将左子结点值加到左叶子之和,因此可以确保每个左叶子都被计算一次且其他结点都不会被计算。
代码
class Solution {public int sumOfLeftLeaves(TreeNode root) {int sum = 0;Queue<TreeNode> queue = new ArrayDeque<TreeNode>();queue.offer(root);while (!queue.isEmpty()) {TreeNode node = queue.poll();if (node.left != null) {if (isLeaf(node.left)) {sum += node.left.val;} else {queue.offer(node.left);}}if (node.right != null) {if (!isLeaf(node.right)) {queue.offer(node.right);}}}return sum;}public boolean isLeaf(TreeNode node) {return node.left == null && node.right == null;}
}
复杂度分析
-
时间复杂度: O ( n ) O(n) O(n),其中 n n n 是二叉树的结点数。每个结点都被访问一次。
-
空间复杂度: O ( n ) O(n) O(n),其中 n n n 是二叉树的结点数。空间复杂度主要是队列空间,队列内元素个数不超过 n n n。
相关文章:
二叉树题目:左叶子之和
文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:左叶子之和 出处:404. 左叶子之和 难度 3 级 题目描述 要求 给你二叉树的根结点 root \texttt{ro…...
Spark SQL报错: Task failed while writing rows.
错误 今天运行 Spark 任务时报了一个错误,如下所示: WARN scheduler.TaskSetManager: Lost task 9.0 in stage 3.0 (TID 69, xxx.xxx.xxx.com, executor 3): org.apache.spark.SparkException: Task failed while writing rows.at org.apache.spark.sq…...
Linux系统下U盘打不开: No application is registered as handling this file
简述 系统是之前就安装好使用的Ubuntu14.04,不过由于某些原因只安装到了机械硬盘中;最近新买了一块固态硬盘,所以打算把Ubuntu系统迁移到新的固态硬盘上; 当成功的迁移了系统之后发现其引导有点问题,导致多个系统启动不…...
07 定时器处理非活动连接(上)
07 定时器处理非活动连接(上) 基础知识 非活跃,是指客户端(这里是浏览器)与服务器端建立连接后,长时间不交换数据,一直占用服务器端的文件描述符,导致连接资源的浪费。 定时事件&a…...
python——案例四:判断字符串中的元素组成
案例四:判断字符串中的元素组成str"Hello World! 666" print(str.isalnum()) #判读所有的字符都是数字或者是字母 print(str.isalpha()) #判读所有的字符都是字母 print(str.isdigit()) #判读所有的字符都是数字 print(str.islower()) #判读所有的字符都是…...
一起学算法(插入排序篇)
概念: 插入排序(inertion Sort)一般也被称为直接插入排序,是一种简单的直观的排序算法 工作原理:将待排列元素划分为(已排序)和(未排序)两部分,每次从&…...
JVM基础篇-本地方法栈与堆
JVM基础篇-本地方法栈与堆 本地方法栈 什么是本地方法? 本地方法即那些不是由java层面实现的方法,而是由c/c实现交给java层面进行调用,这些方法在java中使用native关键字标识 public native int hashCode()本地方法栈的作用? 为本地方法提供内存空…...
防雷保护区如何划分,防雷分区概念LPZ介绍
在防雷设计中,很重要的一点就是防雷分区的划分,只有先划分好防雷区域等级,才好做出比较好的防雷器设计方案。 因为标准对不同区安装的防雷浪涌保护器要求是不一样的。 那么,防雷保护区是如何划分的呢? 如上图所示&…...
随手笔记——3D−3D:ICP求解
随手笔记——3D−3D:ICP求解 使用 SVD 求解 ICP使用非线性优化来求解 ICP 原理参见 https://blog.csdn.net/jppdss/article/details/131919483 使用 SVD 求解 ICP 使用两幅 RGB-D 图像,通过特征匹配获取两组 3D 点,最后用 ICP 计算它们的位…...
Python调用各大机器翻译API大全
过去的二三年中,我一直关注的是机器翻译API在自动化翻译过程中的应用,包括采用CAT工具和Python编程语言来调用机器翻译API,然后再进行译后编辑,从而达到快速翻译的目的。 然而,我发现随着人工智能的发展,很…...
重生之我要学C++第六天
这篇文章的主要内容是const以及权限问题、static关键字、友元函数和友元类,希望对大家有所帮助,点赞收藏评论支持一下吧! 更多优质内容跳转: 专栏:重生之C启程(文章平均质量分93) 目录 const以及权限问题 1.const修饰…...
SpringBoot中ErrorPage(错误页面)的使用--【ErrorPage组件】
SpringBoot系列文章目录 SpringBoot知识范围-学习步骤–【思维导图知识范围】 文章目录 SpringBoot系列文章目录本系列校训 SpringBoot技术很多很多环境及工具:必要的知识深层一些的知识 上效果图在Spring Boot里使用ErrorPage还要注意的是 配套资源作业ÿ…...
【Android】APP网络优化学习笔记
网络优化原因 进行网络优化对于移动应用程序而言非常重要,原因如下: 用户体验: 网络连接是移动应用程序的核心功能之一。通过进行网络优化,可以提高应用的加载速度和响应速度,减少用户等待时间,提供更流…...
简单的知识图谱可视化+绘制nx.Graph()时报错TypeError: ‘_AxesStack‘ object is not callable
绘制nx.Graph时报错TypeError: _AxesStack object is not callable 写在最前面知识图谱可视化预期报错可能的原因 原代码原因确认解决后的代码解决! 写在最前面 实现一个简单的知识图谱的可视化功能。 使用了NetworkX库来构建知识图谱,并使用matplotlib…...
【Matlab】基于粒子群优化算法优化BP神经网络的时间序列预测(Excel可直接替换数据)
【Matlab】基于粒子群优化算法优化BP神经网络的时间序列预测(Excel可直接替换数据) 1.模型原理2.数学公式3.文件结构4.Excel数据5.分块代码5.1 fun.m5.2 main.m6.完整代码6.1 fun.m6.2 main.m7.运行结果1.模型原理 基于粒子群优化算法(Particle Swarm Optimization, PSO)优…...
【机器学习】Cost Function for Logistic Regression
Cost Function for Logistic Regression 1. 平方差能否用于逻辑回归?2. 逻辑损失函数loss3. 损失函数cost附录 导入所需的库 import numpy as np %matplotlib widget import matplotlib.pyplot as plt from plt_logistic_loss import plt_logistic_cost, plt_two_…...
【EI/SCOPUS会议征稿】2023年第四届新能源与电气科技国际学术研讨会 (ISNEET 2023)
作为全球科技创新大趋势的引领者,中国一直在为科技创新创造越来越开放的环境,提高学术合作的深度和广度,构建惠及全民的创新共同体。这些努力为全球化和创建共享未来的共同体做出了新的贡献。 为交流近年来国内外在新能源和电气技术领域的最新…...
【计算机网络】10、ethtool
文章目录 一、ethtool1.1 常见操作1.1.1 展示设备属性1.1.2 改变网卡属性1.1.2.1 Auto-negotiation1.1.2.2 Speed 1.1.3 展示网卡驱动设置1.1.4 只展示 Auto-negotiation, RX and TX1.1.5 展示统计1.1.7 排除网络故障1.1.8 通过网口的 LED 区分网卡1.1.9 持久化配置(…...
什么是前端工程化?
工程化介绍 什么是前端工程化? 前端工程化是一种思想,而不是某种技术。主要目的是为了提高效率和降低成本,也就是说在开发的过程中可以提高开发效率,减少不必要的重复性工作等。 tip 现实生活举例 建房子谁不会呢?请…...
【深度学习】【三维重建】windows11环境配置tiny-cuda-nn详细教程
【深度学习】【三维重建】windows11环境配置tiny-cuda-nn详细教程 文章目录 【深度学习】【三维重建】windows11环境配置tiny-cuda-nn详细教程前言确定版本对应关系源码编译安装tiny-cuda-nn总结 前言 本人windows11下使用【Instant Neural Surface Reconstruction】算法时需要…...
如何在5分钟内快速安装Homebridge Config UI X
如何在5分钟内快速安装Homebridge Config UI X 【免费下载链接】homebridge-config-ui-x The Homebridge UI. Monitor, configure and backup Homebridge from a browser. 项目地址: https://gitcode.com/gh_mirrors/ho/homebridge-config-ui-x Homebridge Config UI X …...
PHP利用Opcache实现保护源码的示例详解
不用 IonCube(或类似的)。不知道这是啥的话,就是加密 PHP 代码但还能运行的工具。问题是太贵了。性能要好,PHP 原生支持。后来想到,PHP 有个"opcache"功能,能把源码编译成操作码(机器…...
HarmonyOS6 半年磨一剑 - RcRadio 组件核心架构与类型系统设计
文章目录前言一、双组件架构设计1.1 两个组件的职责划分1.2 双文件架构二、ComponentV2 装饰器体系2.1 Param 与 Require 的配合2.2 Local 的内部状态隔离三、类型系统设计3.1 基础类型别名3.2 RcRadioValue 的宽松类型3.3 RcRadioOption 接口四、modelValue 双向绑定模型4.1 受…...
Arduino嵌入式工具库解析:按键消抖、字符串格式化与I²C通信
1. 项目概述utils_asukiaaa是一个面向 Arduino 平台的轻量级工具函数库,聚焦于三类高频嵌入式开发场景:机械按键消抖与状态机管理、字符串格式化处理、IC 总线设备通信封装。该库采用 C 命名空间组织(utils_asukiaaa::button/utils_asukiaaa:…...
嵌入式Linux设备可靠升级方案设计与实践
1. 嵌入式Linux升级方案概述在嵌入式Linux设备开发中,软件升级是一个永恒的话题。作为一名嵌入式开发工程师,我经历过无数次凌晨三点被叫起来处理升级失败的痛苦经历。经过多年实践,我总结出一套同时支持本地和远程升级的可靠方案,…...
工程 / 计算机 / 电子领域 EI 会议推荐:2026 年学术会议精选(EI稳定检索 + 权威出版)【4-5月新推】
对于工程、计算机、电子领域学者而言,EI 会议是快速发表成果、满足毕业 / 结题 / 评奖需求的核心渠道。优质会议需满足:IEEE/SAE/JPCS 等权威出版、往届稳定 EI Compendex 检索、主题匹配度高、截稿时间友好。以下精选 2026 年可投、高含金量会议&#x…...
安全测试基础知识点
安全测试不是让你当黑客,是让你知道哪些地方容易被人钻空子。下面这些漏洞,大部分都是因为没校验用户输入或者没做权限控制。 1. XSS:别人在你网页里插了一段JS 啥情况会出? 你把用户填的东西直接显示在页面上,比如搜索框里输入 ,页面弹窗了。更危险的是偷cookie、跳转…...
技术赋能B端拓客:号码核验行业的迭代与价值升级
2026年,数字经济高质量发展进入深水区,B端市场的竞争逻辑已从“规模制胜”转向“效能突围”,拓客环节的精细化、高效化成为企业构建核心竞争力的关键。号码核验作为B端拓客的前置基础性环节,直接关联线索质量、人力效能与拓客投入…...
网站设计:抓住这3点细节,用户体验感飙升!
网站制作要不要做得那么细呢?实际上,当我们发现很多网站制作得很优秀时,怎么看都不知道是如何做好的,但就是感觉不错,实际上这就体现在了制作网站细节上。很多时候设计网站往往容易忽视这三个细节:1、网页图…...
ollama部署本地大模型|embeddinggemma-300m跨境电商评论情感迁移学习实践
ollama部署本地大模型|embeddinggemma-300m跨境电商评论情感迁移学习实践 1. 环境准备与快速部署 想要在本地运行强大的文本嵌入模型吗?今天我来手把手教你用ollama部署embeddinggemma-300m,这是一个只有3亿参数但效果惊人的小模型…...
