代码随想录算法训练营第17天|● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和

110. 平衡二叉树

简单
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。

示例 1:
[图片]
输入:root = [3,9,20,null,null,15,7]
输出:true
示例 2:
[图片]
输入:root = [1,2,2,3,3,null,null,4,4]
输出:false
示例 3:
输入:root = []
输出:true

提示:

  • 树中的节点数在范围 [0, 5000] 内
  • -10(4) <= Node.val <= 10(4)

思考

  • 递归数值传递问题

代码

func isBalanced(root *TreeNode) bool {if root == nil {return true}_, flag := dfs_isBalanced(root)return flag
}func dfs_isBalanced(root *TreeNode) (int, bool) {if root == nil {return 0, true}// 获取左右子树的高度和平衡信息l, l_flag := dfs_isBalanced(root.Left)r, r_flag := dfs_isBalanced(root.Right)// 检查当前子树是否平衡if !l_flag || !r_flag || abs(l-r) > 1 {return max(l, r) + 1, false}// 返回当前子树的高度return max(l, r) + 1, true
}func abs(x int) int {if x < 0 {return -x}return x
}func max(a, b int) int {if a > b {return a}return b
}

257. 二叉树的所有路径

简单
给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。
叶子节点 是指没有子节点的节点。

示例 1:
[图片]
输入:root = [1,2,3,null,5]
输出:[“1->2->5”,“1->3”]
示例 2:
输入:root = [1]
输出:[“1”]

提示:

  • 树中节点的数目在范围 [1, 100] 内
  • -100 <= Node.val <= 100

代码

func binaryTreePaths(root *TreeNode) []string {res := make([]string, 0)temp := make([]int, 0)binaryTreePaths_dfs(root, temp, &res)return res
}func binaryTreePaths_dfs(root *TreeNode, s []int, res *[]string) {if root == nil {return}s = append(s, root.Val)if root.Left == nil && root.Right == nil {// 只有在叶子节点时将路径添加到结果path := strings.Trim(strings.Join(strings.Fields(fmt.Sprint(s)), "->"), " ")path = strings.Trim(path, "[")path = strings.Trim(path, "]")*res = append(*res, path)}binaryTreePaths_dfs(root.Left, s, res)binaryTreePaths_dfs(root.Right, s, res)
}
var res []string    //不安全,学习上面的方法func binaryTreePaths(root *TreeNode) []string {res=make([]string,0)tmp := ""dfs_BTP(root, tmp)return res
}func dfs_BTP(root *TreeNode, tmp string) {if root == nil {return}if len(tmp)==0{tmp = tmp + strconv.Itoa(root.Val)}else{tmp = tmp + "->" + strconv.Itoa(root.Val)}if root.Left == nil && root.Right == nil {res = append(res, tmp)}dfs_BTP(root.Left, tmp)dfs_BTP(root.Right, tmp)return
}

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

代码

func sumOfLeftLeaves(root *TreeNode) int {if root == nil {return 0}//左子树left := sumOfLeftLeaves(root.Left) //没有左子树,就是左叶子节点if root.Left != nil && root.Left.Left == nil && root.Left.Right == nil {left = root.Left.Val}//右子树的左叶子节点right := sumOfLeftLeaves(root.Right)return left + right
}

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

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

相关文章

c++11新特性篇-可调用对象包装器, 绑定器

可调用对象包装器, 绑定器 可调用对象 可调用对象是指在 C 中能够像函数一样被调用的实体。它包括了多种类型的对象&#xff0c;使得它们能够像函数一样被调用&#xff0c;可以是函数、函数指针、函数对象、Lambda 表达式等。在C中&#xff0c;具有以下特征之一的实体都被认为…

Unity 讯飞 之 讯飞星火大模型的简单封装和使用(补充讯飞大模型识图功能)

Unity 讯飞 之 讯飞星火大模型的简单封装和使用&#xff08;补充讯飞大模型识图功能&#xff09; 目录 Unity 讯飞 之 讯飞星火大模型的简单封装和使用&#xff08;补充讯飞大模型识图功能&#xff09; 一、简单介绍 二、实现原理 三、注意事项 四、效果预览 五、案例简单…

【外贸干货】领英客户开发与营销的六个策略方向

领英(LinkedIn)已经成为外贸营销人员&#xff0c;尤其是B2B外贸营销人员&#xff0c;一个重要且有效的社交媒体平台。 相比于其他社交媒体平台&#xff0c;领英(LinkedIn)在增加流量、产生高质量的潜在客户和建立思想领导力方面有着独有的优势。 因为领英(LinkedIn)不仅仅是获…

Harmony开发 eTs公共样式抽取

Harmony系统开发使用eTs开发过程中对于样式相同且重复使用的样式可以抽取成公共样式循环利用&#xff0c;类似于android的style样式。 import router from ohos.router import cryptoFramework from ohos.security.cryptoFramework; import prompt from system.prompt class L…

【LLM_04】自然语言处理基础_2

一、神经网络1、循环神经网络&#xff08;RNN&#xff09;2、门控循环单元&#xff08;GRU&#xff09;3、长短期记忆网络&#xff08;LSTM&#xff09;4、双向RNN5、卷积神经网络&#xff08;CNN&#xff09; 二、注意力机制1、注意力机制原理介绍2、注意力机制的各种变式3、注…

保护您的IP地址:预防IP地址盗用的关键措施

随着互联网的发展&#xff0c;IP地址作为标识互联网设备的重要元素&#xff0c;成为网络通信的基石。然而&#xff0c;IP地址盗用威胁正不断增加&#xff0c;可能导致敏感信息泄露、未经授权的访问和网络攻击。本文将介绍一些有效的方法&#xff0c;以帮助组织和个人预防IP地址…

Acrel-2000电力监控系统在上海大世界保护修缮工程项目中的应用

摘要&#xff1a;安科瑞生产厂家1876150/-6237黄安南 介绍上海大世界电力监控系统&#xff0c;采用智能电力仪表采集配电现场的各种电参量和开关信号。系统采用现场就地组网的方式&#xff0c;组网后通过现场总线通讯并远传至后台&#xff0c;通过Acrel-2000型电力监控系统实现…

Vue与UserEcharts、DataV的协同

文章目录 引言一、Vue.js简介二、ECharts和UserEcharts1.ECharts简介2.UserEcharts&#xff1a;Vue和ECharts的结合 三、DataV简介四、Vue与DataV的结合1.DataV的Vue插件2.Vue和DataV的数据交互 结论我是将军&#xff0c;我一直都在&#xff0c;。&#xff01; 引言 接着上一篇…

ubuntu22.04 arrch64版在线安装java环境

脚本 #安装java#!/bin/bashif type -p java; thenecho "Java has been installed."else#2.Installed Java , must install wgetwget -c https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-arm64-vfp-hflt.tar.gz;tar -zxvf ./jdk-8u151-linux-arm6…

【数据分享】我国12.5米分辨率的山体阴影数据(免费获取)

地形数据&#xff0c;也叫DEM数据&#xff0c;是我们在各项研究中最常使用的数据之一。之前我们分享过源于NASA地球科学数据网站发布的12.5米分辨率DEM地形数据&#xff0c;这个DEM数据的优点是精度高&#xff01;基于该数据我们处理得到12.5米分辨率的坡度数据&#xff08;以上…

外贸分享|如何从外贸小白成长为大咖?这10件事值得你坚持做

外贸成功不是一朝一夕的事&#xff0c;而是需要有充分的准备和持续的努力。作为一位有着丰富经验的外贸人员&#xff0c;我总结了成功的秘诀&#xff0c;分享了一个优秀的外贸人应该做好的10项工作。 1 找不到客户怎么办&#xff1f; 有很多各种各样的原因值得思考&#xff1a…

开发过程中,对于动态库的疑问和思考

开发过程中&#xff0c;对于动态库的疑问和思考 前言&#xff1a;先简述一下开发时的情况。由于工程代码编译是在 Linux 上&#xff0c;可执行文件是在板子&#xff08;ARM&#xff09;上去运行。但是我们需要用到hiredis这个库&#xff0c;我发现无论是 Linux 上还是嵌入式系…

【数字图像处理】均值滤波与中值滤波

在数字图像处理中,均值滤波和中值滤波是常见的空间域处理方法,可以用于过滤图像中的噪声。本文主要介绍数字图像均值滤波与中值滤波的基本原理,并记录在紫光同创 PGL22G FPGA 平台的布署与实现过程。 目录 1. 均值滤波与中值滤波 2. FPGA 布署与实现 2.1 功能与指标定义

aardio调用dll中遇到的难点

近期在做的一个项目&#xff0c;需要调用到32位的dll 查看了dll开发给的函数说明&#xff0c;返回的字符是一个指针地址 虽然在arrdio里面调用成功&#xff0c;但是还需要还原成字符&#xff0c;查了很多资料&#xff0c;程度有限&#xff0c;但是还是找到了一篇文章有讲到&…

基于减法平均算法优化概率神经网络PNN的分类预测 - 附代码

基于减法平均算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于减法平均算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于减法平均优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

Python----函数的参数----形参(定义函数时编写的),实参(调用函数时传递的)

在函数定义与调用时&#xff0c;我们可以根据自己的需求来实现参数的传递。在Python中&#xff0c;函数的参数一共有两种形式&#xff1a;① 形参 ② 实参 形参&#xff1a;在函数定义时&#xff0c;所 编写 的参数就称之为 形式参数 实参&#xff1a;在函数调用时&#…

审核业务

1.用户点击发帖按钮&#xff0c;进行帖子发布 2.存储到mysql经验贴表中&#xff0c;设置帖子为1待审核状态 3.判断帖子的发布时间&#xff0c;如果发布时间为立即发布&#xff0c;那么直接存储到redis的立即审核队列&#xff08;list&#xff09; 4.如果帖子为未来需要发布的…

走进 McDSP - 步入专业音频25周年

McDSP 在专业音频领域已走过 25 个年头。 McDSP 由 Colin McDowell 于 1998 年创立&#xff0c;可用于 Pro Tools、Logic 和 Cubase 等流行数字音频工作站以及 Avid VENUE 现场音响系统的软件和硬件产品中。 为了回顾一些里程碑式的事件&#xff0c;我们将为您带来一部关于公司…

Spring Boot配置文件 Spring日志文件相关的知识

在上文中&#xff0c;小编带领大家创建了一个Spring Boot项目&#xff0c;并且成功的执行了第一个SPring Boot项目&#xff08;在网页上运行hello world&#xff09; 那么&#xff0c;本文的主要作用便是带领大家走进&#xff1a;Spring Boot配置文件 && Spring日志文件…

flutter之graphic图表自定义tooltip

renderer graphic中tooltip的TooltipGuide类提供了renderer方法&#xff0c;接收三个参数Size类型&#xff0c;Offset类型&#xff0c;Map<int, Tuple>类型。可查到的文档是真的少&#xff0c;所以只能在源码中扒拉例子&#xff0c;做符合需求的修改。 官方github示例 …