算法训练营Day17

110.平衡二叉树

110. 平衡二叉树 - 力扣(LeetCode)

核心:左右子树的高度不超过1

如果不是平衡二叉树,则返回-1.通过是否是-1来判断是否是平衡二叉树

求高度,采用后续遍历。

再复习一下后续遍历的思想,可以将左右子树的情况给到根节点做判断。

class Solution {public boolean isBalanced(TreeNode root) {int res = getHeight(root);if(res==-1) return false;return true;}private int getHeight(TreeNode root){if(root==null){return 0;}int leftHeigh = getHeight(root.left);if(leftHeigh==-1) return -1;int rightHeigh = getHeight(root.right);if(rightHeigh==-1) return -1;int res;if(Math.abs(rightHeigh-leftHeigh)>1) {res = -1;}else{return 1+Math.max(leftHeigh,rightHeigh);}return res;}
}

 257. 二叉树的所有路径 (涉及回溯知识,二刷时注意)

257. 二叉树的所有路径 - 力扣(LeetCode)

class Solution {public List<String> binaryTreePaths(TreeNode root) {List<String> result = new ArrayList<>();List<Integer> paths = new ArrayList<>();tarversal(root,paths,result);return result;}private void tarversal(TreeNode root,List<Integer> paths,List<String> res){//前序。根paths.add(root.val);//叶子(收集)if(root.left==null&&root.right==null){StringBuilder sb = new StringBuilder();for(int i = 0;i<paths.size()-1;i++){sb.append(paths.get(i)).append("->");}sb.append(paths.get(paths.size()-1));res.add(sb.toString());return;}//左if(root.left!=null){tarversal(root.left,paths,res);paths.remove(paths.size()-1);//回溯}//右if(root.right!=null){tarversal(root.right,paths,res);paths.remove(paths.size()-1);//回溯}}}

404.左叶子之和 

404. 左叶子之和 - 力扣(LeetCode)

注意左叶子的节点需要注意root.left.left和root.right.rihgt都为null才是叶子

就是这里后续遍历的逻辑,比卡哥的简洁一点吧,可以写到left和right后面

这个自己对比卡哥的,再体会一下。

class Solution {public int sumOfLeftLeaves(TreeNode root) {if(root==null){return 0;}int left=sumOfLeftLeaves(root.left);int right=sumOfLeftLeaves(root.right);int sum =0;if(root.left!=null&&root.left.left==null&&root.left.right==null){sum+=root.left.val;}    return sum+left+right;}}

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

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

相关文章

在 Windows PC 上轻松下载并安装 FFmpeg

FFmpeg 是一种开源媒体工具&#xff0c;可用于将任何视频格式转换为您需要的格式。该工具只是命令行&#xff0c;因此它没有图形、可点击的界面。如果您习惯使用常规图形 Windows 程序&#xff0c;安装 FFmpeg 一开始可能看起来很复杂&#xff0c;但不用担心&#xff0c;它;很简…

淘宝、抖音、视频号直播电商“赛马”

经过多年发展&#xff0c;货架电商和社交电商在当下已是一片红海&#xff0c;因此&#xff0c;淘宝、京东、拼多多API接口等电商巨头为寻求新的增长&#xff0c;纷纷另辟蹊径&#xff0c;开始在异域探索。而由于用户如今的购物需求已经发生了天翻地覆的变化&#xff0c;于是&am…

pythom selenium Web自动化测试项目---购票系统实战

pythom selenium Web自动化测试项目—购票系统实战 环境搭建 python环境&#xff08;建议使用anaconda&#xff09; pycharm IDE集成开发工具 selenimu的安装S 安装命令&#xff1a;pip install selenium 校验环境是否搭建成功 写一个简单的demo打开浏览器看能否成功 webDriv…

中国社会科学院大学-新加坡新跃社科大学教育项目招生简章

一、项目简介 全球经济正在经历由科技进步和创新、政治和人口剧烈变化所带来的巨大的不确定性和挑战。面对日趋复杂的外部竞争环境&#xff0c;企业的领导者和管理者需要具备卓越的战略思维和全球洞察力、以科学的精神和严谨务实的态度引领企业创新发展。 为此&#xff0c;中…

IPC之七:使用 System V 共享内存段进行进程间通信的实例

IPC 是 Linux 编程中一个重要的概念,IPC 有多种方式,本文主要介绍共享内存(Shared Memory),因为没有像管道、消息队列这样的中介介入,所以通常认为共享内存是迄今为止最快的 IPC 方式;Linux 既支持 UNIX SYSTEM V 的共享内存,也支持 POSIX 的共享内存,本文针对 System V…

微信小程序自定义组件---behaviors

1.什么是behaviors behaviors是小程序中&#xff0c;用于实现组件间代码共享的特性&#xff0c;类似于vue中的mixins 2.behaviors的工作方式 每个behavior可以包含一组属性、数据、生命周期函数和方法。组件引用它时&#xff0c;它的属性、数据和方法会被合并到组件中。每个组…

数字孪生项目的开发平台

WEBGL 开发数字孪生项目的流程涵盖了需求分析、场景搭建、模型创建、数据接入、动画与交互、性能优化、测试与部署以及维护与升级等方面。WEBGL 开发数字孪生项目的流程可以分为以下几个步骤&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外…

UniGui使用CSS移动端按钮标题垂直

unigui移动端中按钮拉窄以后&#xff0c;标题无法垂直居中&#xff0c;是因为标题有一个padding属性&#xff0c;在四周撑开一段距离。会变成这样&#xff1a; 解决方法&#xff0c;用css修改padding&#xff0c;具体做法如下 首先给button的cls创建一个cls,例如 然后添加css&…

SSE Server-Send Events适用于什么场景,有什么弊端存在

Server-Sent Events (SSE) 是一种用于在客户端和服务器之间实现单向实时通信的 Web 技术。它主要适用于需要从服务器向客户端推送实时信息的场景&#xff0c;例如新闻更新、股票价格变动、社交媒体通知等。 SSE 的优点&#xff1a; 实时性&#xff1a; SSE 提供了从服务器到客…

网络协议 - HTTP 协议详解

网络协议 - HTTP 协议详解 一 、基础概念URL请求和响应报文1. 请求报文2. 响应报文 二、HTTP 方法GETHEADPOSTPUTPATCHDELETEOPTIONSCONNECTTRACE 三、HTTP 状态码1XX 信息2XX 成功3XX 重定向4XX 客户端错误5XX 服务器错误 四、HTTP 首部通用首部字段请求首部字段响应首部字段实…

Maven环境搭建及配置

Maven环境搭建及配置 1.下载部署 官方网站下载正式版的Maven文件,打开bin目录&#xff0c;复制路径然后去环境变量中的path下配置环境变量&#xff0c; 如果只有一个用户只需要在上面path配置复制的路径,当然也可以直接在下面配置,下面配置默认给所有用户都配置 设置完成打开控…

Tc0.Springboot项目启动失败

问题&#xff1a;IDEA调试Springboot项目启动失败&#xff1a;已与地址为 ‘‘127.0.0.1:12574’&#xff0c;传输: ‘套接字’’ 的目标虚拟机断开连接 一、现象描述 IDE&#xff08;IDEA或者Eclipse&#xff09;调试模式 博主使用的是IDEA 2023社区版&#xff1a;已与地址…

C#生成微信支付的Authorization签名认证

//获取签名var Token BuildAuthAsync("GET", body, URL);/// <summary>/// 构造签名串/// </summary>/// <param name"method">HTTP请求方式&#xff08;全大写&#xff09;</param>/// <param name"body">API接口…

【Unity】简单实现生成式电子围栏

【Unity】简单实现生成式电子围栏 三维电子围栏是一种通过使用三维技术和电子设备来建立虚拟围栏&#xff0c;用于监控和控制特定区域的系统。它可以通过使用传感器和摄像头来检测任何越界行为&#xff0c;并及时发出警报。这种技术可以应用于安防领域以及其他需要对特定区域进…

nodejs获取的微信小程序二进制图片无法展示

我们使用微信官方提供的接口getwxacode获取了微信小程序二维码&#xff0c;但是&#xff0c;获取的二进制图片无论如何都没法展示出来。 调用微信官方接口的方法为&#xff1a;使用Nodejs包request&#xff0c;调用方法为; // 获取小程序二维码 async queryQRCode(access_tok…

Leetcode—2413.最小偶倍数【简单】

2023每日刷题&#xff08;六十&#xff09; Leetcode—2413.最小偶倍数 class Solution { public:int smallestEvenMultiple(int n) {return (n % 2 1) * n;} };运行结果 之后我会持续更新&#xff0c;如果喜欢我的文章&#xff0c;请记得一键三连哦&#xff0c;点赞关注收藏…

Mistral AI 为什么这么火

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

【构建工具】vite2没捂热,vite5又来了,性能大幅提升!

vite2还没焐热&#xff0c;vite5又来了&#xff01;&#xff01;&#xff01; 就在一周前vite5重磅发布了&#xff01;性能大幅提升! 请看下面&#xff1a;下面是翻译过来的&#xff0c;原文&#xff1a;Vite 5.0 发布&#xff01; |维特 (vitejs.dev) Vite 4 大约在一年前发布…

项目中使用临时文件夹或获取文件资源路径

关于项目中使用临时文件夹的情况 1. 如果想要获取resource目录下的某个文件夹路径&#xff1a; ResourceUtils.getURL("classpath:").getPath() "/xxx" 注意&#xff1a; 1.1 不能直接使用ResourceUtils.getURL("classpath:xxx&quo…

算法训练day37|贪心算法part06

738.单调递增的数字 遇到了strNum[i - 1] > strNum[i]&#xff0c;让strNum[i - 1]--&#xff0c;然后strNum[i]及以后给为9 根据这种情况从后往前遍历 class Solution {public int monotoneIncreasingDigits(int n) {String s String.valueOf(n);char[] chars s.toCha…