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

Leetcode——404 左叶子之和

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

 //未考虑周到 

我自己写时 只考虑到了 如何找到左叶子节点 然而却忽略了 上面示例会直接返回 而没有去走右边的子树 

官方代码 看似没有特点 实则暗藏玄机 它在遍历左树时不仅记录了数值 而且返回了 (考虑到了上面的那种情况 ) 

长记性了 以后写代码还是要学习学习这种写法 

#include<iostream>
using namespace std;// Definition for a binary tree node.
struct TreeNode {int val;TreeNode *left;TreeNode *right;TreeNode() : val(0), left(nullptr), right(nullptr) {}TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};class Solution {
public:int sumOfLeftLeaves(TreeNode* root) {/*if (root == nullptr)return 0;if (root->left == nullptr && root->right == nullptr)return 0;if (root->left != nullptr && root->left->left == nullptr && root->left->right == nullptr)return root->left->val;return sumOfLeftLeaves(root->left) + sumOfLeftLeaves(root->right);*///以上是错误代码 我掉进去的示例就是下面的 没考虑周到if (root == nullptr)return 0;if (root->left == nullptr && root->right == nullptr)return 0;int sumleft = sumOfLeftLeaves(root->left);if (root->left->left == nullptr && root->left->right == nullptr)//return root->left->val;sumleft = root->left->val;int sumright = sumOfLeftLeaves(root->right);return sumleft+sumright;}
};int main()
{TreeNode a1, a2, a3, a4, a5;a1.left = &a2;a1.right = &a3;a3.left = &a4;a3.right = &a5;a1.val = 3;a2.val = 9;a3.val = 20;a4.val = 15;a5.val = 7;Solution A;cout<< A.sumOfLeftLeaves(&a1) << endl;return 0;
}

总结的不是很好 有大神的话请指教

相关文章:

Leetcode——404 左叶子之和

404. 左叶子之和 难度简单&#xff08;虽然简单 但是我用递归做时 还是有点坑的&#xff09; 给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 示例 1&#xff1a; 输入: root [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中&#xff0c;有两个左叶子…...

R并行计算-parallel例子1

前言&#xff1a; 通常&#xff0c;如果进程运行时间超过3分钟&#xff0c;则会考虑使用并行处理。 这听起来可能很复杂&#xff0c;但是并行计算很简单。 当你有一个重复的任务&#xff0c;它占用了你太多宝贵的时间&#xff0c;为什么不使用并行计算来节省时间呢&#xff…...

JavaSE复盘2

Collection接口的接口对象集合&#xff08;单列集合&#xff09; List接口&#xff1a;元素按照先后有序保存&#xff0c;可重复 LinkList接口实现类&#xff0c;链表&#xff0c;随机访问&#xff0c;没有同步&#xff0c;线程不安全ArrayList接口实现类&#xff0c;数组&…...

如何在3ds max中创建可用于真人场景的巨型机器人:第 3 部分

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 创建腿部装备 步骤 1 打开 3ds Max。 打开在本教程最后一部分中保存的文件。 打开 3ds Max 步骤 2 转到创建> 系统并单击骨骼。 创建>系统 步骤 3 为的 侧视口中的腿&#xff0c;如下图所示…...

Android性能优化之游戏引擎初始化ANR

近期&#xff0c;着手对bugly上的anr 处理&#xff0c;记录下优化的方向。 借用网上的一张图&#xff1a; 这里的anr 问题是属于主线程的call 耗时操作。需要使用trace 来获取发生anr前一些列的耗时方法调用时间&#xff0c;再次梳理业务&#xff0c;才可能解决。 问题1 ja…...

Jmap-JVM(十六)

上篇文章说了ZGC是jdk11加入的&#xff0c;他是未来jvm垃圾收集器的奠定者&#xff0c;满足TB级别内存处理&#xff0c;STW时间保持在10ms以下。 Jmap 我们可以先通过jmap -histo 进程ip 来查看&#xff0c;但是这样看不太清晰&#xff0c;我们可以用这行命令生成一个文件&…...

【分布式能源的选址与定容】基于多目标粒子群算法分布式电源选址定容规划研究(Matlab代码实现)

目录 &#x1f4a5;1 概述 1.1 功率损耗 ​编辑1.2 电压质量 1.3 DG总容量 &#x1f4da;2 运行结果 &#x1f308;3 Matlab代码实现 &#x1f389;4 参考文献 &#x1f4a5;1 概述 参考文献&#xff1a; 本文采用的是换一个算法解决&#xff0c; 基于基于多目标粒子群算法分布…...

flink源码分析-获取JVM最大堆内存

flink版本: flink-1.11.2 代码位置: org.apache.flink.runtime.util.EnvironmentInformation#getMaxJvmHeapMemory 如果设置了-Xmx参数&#xff0c;就返回这个参数&#xff0c;如果没设置就返回机器物理内存的1/4. 这里主要看各个机器内存的获取方法。 /*** The maximum JVM…...

第17节 R语言分析:生物统计数据集 R 编码分析和绘图

生物统计数据集 R 编码分析和绘图 生物统计学,用于对给定文件 data.csv 中的医疗数据应用 R 编码,该文件是患者人口统计数据集,包含有关来自各种祖先谱系的个体的标准信息。 数据集特征解释 脚本 output= file("Output.txt") # File name of output log sink(o…...

一文了解什么是Selenium自动化测试?

目录 一、Selenium是什么&#xff1f; 二、Selenium History 三、Selenium原理 四、Selenium工作过程总结&#xff1a; 五、remote server端的这些功能是如何实现的呢&#xff1f; 六、附&#xff1a; 一、Selenium是什么&#xff1f; 用官网的一句话来讲&#xff1a;Sel…...

java接口实现

文章目录 java接口实现接口中成员组成默认方法静态方法私有接口&#xff08;保证自己的JDK版本大于等于9版本&#xff09;类和接口的关系抽象类与接口之间的区别 java接口实现 1.接口关键字 interface2.接口不能实例化3.类与接口之间的关系是实现关系&#xff0c;通过 impleme…...

数据结构入门指南:链表(新手避坑指南)

目录 前言 1.链表 1.1链表的概念 1.2链表的分类 1.2.1单向或双向 1.2.2.带头或者不带头 1.2.33. 循环或者非循环 1.3链表的实现 定义链表 总结 前言 前边我们学习了顺序表&#xff0c;顺序表是数据结构中最简单的一种线性数据结构&#xff0c;今天我们来学习链表&#x…...

SpringBoot第24讲:SpringBoot集成MySQL - MyBatis XML方式

SpringBoot第24讲&#xff1a;SpringBoot集成MySQL - MyBatis XML方式 上文介绍了用JPA方式的集成MySQL数据库&#xff0c;JPA方式在中国以外地区开发而言基本是标配&#xff0c;在国内MyBatis及其延伸框架较为主流。本文是SpringBoot第24讲&#xff0c;主要介绍MyBatis技栈的演…...

linux 查看网卡,网络情况

1&#xff0c;使用nload命令查看 #yum -y install nload 2&#xff0c; 查看eth0网卡网络情况 #nload eth0 Incoming也就是进入网卡的流量&#xff0c;Outgoing&#xff0c;也就是从这块网卡出去的流量&#xff0c;每一部分都有下面几个。 – Curr&#xff1a;当前流量 – Avg…...

在Mac上搭建Gradle环境

在Mac上搭建Gradle环境&#xff1a; 步骤1&#xff1a;下载并安装Java开发工具包&#xff08;JDK&#xff09; Gradle运行需要Java开发工具包&#xff08;JDK&#xff09;。您可以从Oracle官网下载适合您的操作系统版本的JDK。请按照以下步骤进行操作&#xff1a; 打开浏览器…...

Docker网络与Docker Compose服务编排

docker网络 docker是以镜像一层一层构建的&#xff0c;而基础镜像是linux内核&#xff0c;因此docker之间也需要通讯&#xff0c;那么就需要有自己的网络。就像windows都有自己的内网地址一样&#xff0c;每个docker容器也是有自己的私有地址的。 docker inspect [docker_ID]…...

opencv+ffmpeg环境(ubuntu)搭建全面详解

一.先讲讲opencv和ffmpeg之间的关系 1.1它们之间的联系 我们知道opencv主要是用来做图像处理的&#xff0c;但也包含视频解码的功能&#xff0c;而在视频解码部分的功能opencv是使用了ffmpeg。所以它们都是可以处理图像和视频的编解码&#xff0c;我个人感觉两个的侧重点不一…...

开发基于 LoRaWAN 的设备须知--最大兼容性

最大兼容性配置简介 LoRaWAN开放协议的建立前提是每个制造的设备都可以被唯一且安全地识别。配置是创建唯一标识和相应秘密的过程。虽然配置过程是常规的,但存在一些可能并不明显的陷阱。本章尝试描述配置基于 LoRa 的设备的一些最佳实践。 配置概念 基于 LoRa 的设备配置与银…...

一、SpringBoot基础[日志]

一、日志 解释&#xff1a;SpringBoot使用logback作为默认的日志框架&#xff0c;其中还可以导入log4j2等优秀的日志框架 1.修改日志内容 修改整个日志格式&#xff1a;logging.pattern.console%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{15} 你好 %msg%n %d{yyy…...

libuv库学习笔记-networking

Networking 在 libuv 中&#xff0c;网络编程与直接使用 BSD socket 区别不大&#xff0c;有些地方还更简单&#xff0c;概念保持不变的同时&#xff0c;libuv 上所有接口都是非阻塞的。它还提供了很多工具函数&#xff0c;抽象了恼人、啰嗦的底层任务&#xff0c;如使用 BSD …...

Graphormer部署教程(RTX 4090):3.7GB模型显存占用仅18.2GB实测

Graphormer部署教程&#xff08;RTX 4090&#xff09;&#xff1a;3.7GB模型显存占用仅18.2GB实测 1. 项目介绍 Graphormer是一种基于纯Transformer架构的图神经网络&#xff0c;专门为分子属性预测任务设计。这个模型在分子图&#xff08;原子-键结构&#xff09;的全局结构…...

PrimeTime:默认配置文件

相关阅读 PrimeTimehttps://blog.csdn.net/weixin_45791458/category_12900271.html?spm1001.2014.3001.5482 当启动PrimeTime时&#xff0c;它会自动执行三个设置文件中的命令&#xff0c;这些文件具有相同的文件名.synopsys_pt.setup&#xff0c;但位于不同的目录中&#x…...

Nunchaku FLUX.1-dev实战:手把手教你用ComfyUI生成惊艳AI图片

Nunchaku FLUX.1-dev实战&#xff1a;手把手教你用ComfyUI生成惊艳AI图片 1. 环境准备与快速部署 1.1 硬件与软件要求 在开始之前&#xff0c;请确保你的系统满足以下基本要求&#xff1a; 显卡&#xff1a;NVIDIA显卡&#xff08;推荐RTX 30/40系列&#xff0c;显存8GB&am…...

Wan2.2-I2V-A14B实战案例:为本地餐饮店生成15秒抖音爆款菜品视频

Wan2.2-I2V-A14B实战案例&#xff1a;为本地餐饮店生成15秒抖音爆款菜品视频 1. 项目背景与价值 对于本地餐饮商家来说&#xff0c;短视频营销已经成为吸引顾客的重要手段。然而&#xff0c;专业视频制作成本高、周期长&#xff0c;很多小店难以承担。Wan2.2-I2V-A14B文生视频…...

Android 离线语音合成技术选型指南:从MaryTTS到TensorFlowTTS

1. 为什么需要离线语音合成技术&#xff1f; 最近几年&#xff0c;越来越多的应用开始集成语音合成功能。你可能见过导航软件里实时播报路况的电子女声&#xff0c;或者听书App里流畅朗读小说的AI配音。这些场景背后&#xff0c;都离不开TTS&#xff08;Text-To-Speech&#x…...

数字图像处理核心算法手撕实现 (一)

1. 数字图像处理基础概念 数字图像处理就像给照片做美容手术&#xff0c;只不过操作对象是像素矩阵。我第一次接触这个概念是在大学实验室&#xff0c;当时对着一个512x512的灰度图矩阵发呆了半小时&#xff0c;才明白那些0-255的数字代表着什么。 空间分辨率相当于照片的&qu…...

如何从其他理财应用迁移到Ivy Wallet:数据导入完全指南

如何从其他理财应用迁移到Ivy Wallet&#xff1a;数据导入完全指南 【免费下载链接】ivy-wallet Ivy Wallet is an open-source money manager app for android that you can either build or download from Google Play. 项目地址: https://gitcode.com/gh_mirrors/iv/ivy-w…...

原创:行业空白:从约束崩塌到系统闭环的工程新论

行业空白&#xff1a;从约束崩塌到系统闭环的工程新论 作者&#xff1a;华夏之光永存 #工程约束 #底层架构 #系统稳定性 #软件开发 #高端制造 #工程方法论 #逻辑闭环 #零缺陷工程 #源头治理 #技术架构 摘要 本文直指当前工程领域普遍存在的核心问题&#xff1a;缺乏统一、刚性的…...

大麦智能抢票系统:告别手速极限的终极解决方案

大麦智能抢票系统&#xff1a;告别手速极限的终极解决方案 【免费下载链接】ticket-purchase 大麦自动抢票&#xff0c;支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票而烦恼吗&…...

3步掌握AI模型训练:让新手也能玩转个性化Stable Diffusion模型

3步掌握AI模型训练&#xff1a;让新手也能玩转个性化Stable Diffusion模型 【免费下载链接】sd-trainer 项目地址: https://gitcode.com/gh_mirrors/sd/sd-trainer 在数字创意领域&#xff0c;AI绘画模型训练曾是一道高不可攀的技术门槛。设计师面对复杂的代码配置望而…...