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

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专栏,每日更新!

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenGL入门教程之 深入理解

一、OpenGL简介 OpenGL是一种用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程规范。OpenGL包含一系列可以操作图形和图像的函数&#xff0c;但OpenGL没有实现这些函数&#xff0c;OpenGL仅规定每个函数应该如何执行以及其输出值(类似接口)&#xff0c;所以OpenGL仅是一…

基于JSP的网上购物系统的设计与实现(论文+源码)_kaic

摘 要 近些年来&#xff0c;社会的生产力和科技水平在不断提高&#xff0c;互联网技术也在不断更新升级&#xff0c;网络在人们的日常生活中扮演着一个重要角色&#xff0c;它极大地方便了人们的生活。为了让人们实现不用出门就能逛街购物&#xff0c;网络购物逐渐兴起慢慢变得…

新一代AI带来更大想象空间!上海将打造元宇宙超级场景!

引子 上海市经信委主任吴金城4月12日在“2023上海民生访谈”节目表示&#xff0c;上海将着力建设元宇宙智慧医院、前滩东体元宇宙、张江数字孪生未来之城等元宇宙超级场景。 吴金城说&#xff0c;新一代人工智能将带来更大的想象空间。比如&#xff0c;人工智能和元宇宙数字人的…

ESP32设备驱动-SHT20温湿度传感器驱动

SHT20温湿度传感器驱动 文章目录 SHT20温湿度传感器驱动1、SHT20介绍2、硬件准备3、软件准备4、驱动实现1、SHT20介绍 Sensirion 的 SHT20 湿度和温度传感器已成为外形尺寸和智能方面的行业标准:嵌入在 3 x 3mm 封装和 1.1mm 高度的可回流焊双扁平无引线 (DFN) 封装中,它提供…

项目人力资源管理

相关概念 组织结构图:用图形表示项目汇报关系。最常用的有层次结构图、矩阵图、文本格式的角色描述等3种。 任务分配矩阵(或称责任分配矩阵)(RAM):用来表示需要完成的工作由哪个团队成员负责的矩阵,或需要完成的工作与哪个团队成员有关的矩阵。 一、规划人力资源管理(编…

动力节点Vue笔记——Vue与Ajax

四、Vue与AJAX 4.1 回顾发送AJAX异步请求的方式 发送AJAX异步请求的常见方式包括&#xff1a; 原生方式&#xff0c;使用浏览器内置的JS对象XMLHttpRequest const xhr new XMLHttpRequest()xhr.onreadystatechange function(){}xhr.open()xhr.send() 原生方式&#xff0…

zabbix客户端配置

一、zabbix客户端配置 1.实验环境&#xff1a;关闭防火墙和安全模块 systemctl disable --now firewalld setenforce 0 2.服务端和客户端都要时间同步 yum install -y ntpdate #注意安装需要用网络源安装&#xff0c;不能用本地源 ntpda…

google账号注册流程升级了!2023年谷歌gmail邮箱帐号注册申请教程(完整版)

google账号注册升级了&#xff01; 2023年4月份google账号注册流程升级了&#xff0c;升级之前的版本是完成验证手机号码后才填写用户资料&#xff0c;升级之后的版本是需要先填写用户资料才能注册谷歌gmail邮箱帐号&#xff1b; 2023年谷歌gmail邮箱帐号注册申请教程 1、打开…

电子器件系列34:tvs二极管(2)

一、基本原理&#xff1a; 二、重要产数&#xff1a; 不同的资料对于相同的参数可能有不同的命名&#xff0c;要根据实际情况来确定参数的意义 这里以上图表格里的参数名称进行解析&#xff0c;以其他资料作为参考。 结合图表和伏安特性曲线&#xff0c;再结合下面的图我是…

这才是后端API该有的样子

一般系统大致架构如下&#xff1a; 有些小伙伴会说&#xff0c;这个架构太简单太low了吧&#xff0c;什么网关、缓存、消息中间件都没有。 需要说明的是&#xff0c;因为我们主题是API接口&#xff08;tbAPI&#xff0c;pinduoduo API接口调用&#xff09;所以聚焦这一点上就行…

Linux命令·ping

Linux系统的ping命令是常用的网络命令&#xff0c;它通常用来测试与目标主机的连通性&#xff0c;我们经常会说“ping一下某机器&#xff0c;看是不是开着”、不能打开网页时会说“你先ping网关地址192.168.1.1试试”。它通过发送ICMP ECHO_REQUEST数据包到网络主机&#xff08…

【小程序】django笔记2

templates路径除了在settings中的templates的DIR[]中申明还有什么别的方法&#xff1f; 已知&#xff0c;django底层根据app注册顺序查找各app文件中的templates文件夹&#xff0c;在其中搜索目标模版文件。 已知&#xff0c;app注册在settings中的INSTAll-APPS里。 已知&#…

C++ 缺省参数 函数重载 引用

缺省参数&#xff0c;我们先看一下什么是缺省参数 首先&#xff0c;这个是我们的需要传参的函数&#xff0c;这里我们传入 1 然后就输出 a 下面我们就看一下缺省参数 我们现在看main函数里面调用fun函数&#xff0c;这里会输出多少呢&#xff1f; OK 这里我们分别输出了0 和 1…

【2023】cookie是什么?有什么用?一篇文章彻底搞懂cookie

一个不大不小的问题 假设服务器有一个接口&#xff0c;通过请求这个接口&#xff0c;可以添加一个管理员 但是&#xff0c;不是任何人都有权力做这种操作的 那么服务器如何知道请求接口的人是有权力的呢&#xff1f; 答案是&#xff1a;只有登录过的管理员才能做这种操作 …

SpringCloud之OpenFeign介绍案例+相关面试题

概述 OpenFeign是一个声明式的WEB服务客户端&#xff0c;它使WEB服务客户端变得更加容易。具有可插拔的注解支持&#xff0c;SpringCloud中添加了SpringMVC注解的支持。SpringCloud中集成了Ribbon和Eureka&#xff0c;以及SpringCloud LoadBalance&#xff0c;以便在使用Feign时…

pyest+appium实现APP自动化测试,思路全总结在这里

目录 01、appium环境搭建 2、搭建pythonpytestappium环境 3、安装pycharm搭建项目编写脚本 4、执行测试 绵薄之力 01、appium环境搭建 安装nodejs http://nodejs.cn/ 为什么要安装nodejs&#xff1f; 因为appium这个工具的服务端是由nodejs语言开发的 安装jdk&#xf…

mysql数据库简介

1.什么是数据库&#xff1a;数据仓库。访问必须只能用SQL语句来访问。数据库也是一个文件的系统。 2.数据库的作用&#xff1a;存储数据的作用。开发任何的应用&#xff0c;都有数据库。 3.关系型的数据库&#xff1a;数据库中保存的都是实体与实体之间的关系。 4.常见的数据库…

2023接口自动化测试,完整入门篇

1. 什么是接口测试 顾名思义&#xff0c;接口测试是对系统或组件之间的接口进行测试&#xff0c;主要是校验数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型&#xff0c;测试类型又主…

stata绘图指令

stata绘图指令 – 潘登同学的stata笔记 文章目录 stata绘图指令 -- 潘登同学的stata笔记 绘图概览韦恩图折线图连线图线性拟合图直方图 函数图添加特殊字符和文字 绘图概览 Stata 提供的图形种类&#xff1a; twoway 二维图scatter 散点图line 折线图area 区域图lfit 线性拟合…

基于单片机的温室大棚环境监测系统设计

温室大棚对北方反季节蔬菜的种植具有重要意义。据了解全国各地温室大棚使用集中&#xff0c;但是大棚环境调控方式落后、管理落后、生产效率比较低。针对此问题本文提出了一种基于STM32单片机智能温室大棚控制系统方案&#xff0c;实现环境参数的自动检测&#xff0c;以达到智能…