代码随想录算法训练营DAY17 | 二叉树 (4)

一、LeetCode 110 平衡二叉树

题目链接: 110.平衡二叉树icon-default.png?t=N7T8https://leetcode.cn/problems/balanced-binary-tree/

思路:设置深度计算函数,进行递归处理。

class Solution {public boolean isBalanced(TreeNode root) {if(root == null){return true;}boolean left = isBalanced(root.left);boolean right = isBalanced(root.right);int length_left = depth(root.left);int length_right = depth(root.right);int flag = length_left - length_right;if(flag >= -1 && flag <= 1){//本层平衡且左右子树均平衡return true && left && right;}else{return false;}}//计算子树深度public int depth(TreeNode root){if(root == null){return 0;}int left = depth(root.left);int right = depth(root.right);return left>right ? left+1 : right+1;}
}
/*** 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;*     }* }*/

 二、LeetCode 257 二叉树的所有路径

题目链接:257.二叉树的所有路径icon-default.png?t=N7T8https://leetcode.cn/problems/binary-tree-paths/description/

思路:递归+回溯。

class Solution {public List<String> binaryTreePaths(TreeNode root) {List<Integer> path = new ArrayList<>();List<String> ans = new ArrayList<>();path(root,path,ans);return ans;}public void path(TreeNode root, List<Integer> path, List<String> ans){path.add(root.val); //中//若为叶子节点则输出该路径if(root.left == null && root.right == null){StringBuilder sb = new StringBuilder();for(int i = 0; i < path.size()-1; i++){sb.append(path.get(i)).append("->");}//加入叶子节点sb.append(root.val);ans.add(sb.toString());}//回溯处理if(root.left != null){path(root.left,path,ans);path.remove(path.size()-1);}if(root.right != null){path(root.right,path,ans);path.remove(path.size()-1);}}
}
/*** 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;*     }* }*/

 三、LeetCode 404 左叶子之和

题目链接:404.左叶子之和icon-default.png?t=N7T8https://leetcode.cn/problems/sum-of-left-leaves/

思路:后序递归遍历、左叶子节点处理。

class Solution {public int sumOfLeftLeaves(TreeNode root) {if(root == null){return 0;}//递归遍历 左右中int left = sumOfLeftLeaves(root.left);int right = sumOfLeftLeaves(root.right);int mid = 0;//遇到左叶子节点就记录数值,否则记为0if(root.left != null && root.left.left == null && root.left.right == null){mid = root.left.val;}return left + mid + right;}
}
/*** 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;*     }* }*/

 四、小结

        假期结束,开刷OVO

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

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

相关文章

如何在 JavaScript 中比较两个日期 – 技术、方法和最佳实践

在 JavaScript 中&#xff0c;您可以使用 date 对象有效地处理应用程序中的日期、时间和时区。 Date 对象可帮助您有效地操作数据、处理各种与日期相关的任务&#xff0c;并在创建实际应用程序时执行一些计算。 &#xff08;本文内容参考&#xff1a;java567.com&#xff09;…

幻兽帕鲁服务器配置参数说明(Palworld官方汉化)

创建幻兽帕鲁服务器配置参数说明&#xff0c;Palworld服务器配置参数与解释&#xff0c;阿腾云atengyun.com分享&#xff1a; 自建幻兽帕鲁服务器教程&#xff1a; 阿里云教程 https://t.aliyun.com/U/bLynLC腾讯云教程 https://curl.qcloud.com/oRMoSucP 幻兽帕鲁服务器 幻…

基于Keras和LSTM单参数预测中兴通讯股票走势,结果震惊,含代码数据集

1.前言 昨天用分类算法预测大A各个股票的第二天行情&#xff0c;预测结果出现了千股下跌的场景&#xff0c;结果着实让我震惊&#xff0c;预测结果如下图&#xff0c;有没有可能预测第二天究竟涨了多少或者跌了多少呢&#xff1f;毕竟短线交易见好就收呢&#xff1f; 通过查找…

短路在JavaScript中是如何工作的?

在 JavaScript 中&#xff0c;理解真实和虚假的值是编写高效简洁代码的基础。结合短路的概念&#xff0c;开发人员可以编写优雅的解决方案来应对常见的编程挑战。 在本实践指南中&#xff0c;我们将探讨真实值和虚假值&#xff0c;并了解 JavaScript 中短路的机制。 您可以从…

爬虫——ajax和selenuim总结

为什么要写这个博客呢&#xff0c;这个代码前面其实都有&#xff0c;就是结束了。明天搞个qq登录&#xff0c;这个就结束了。 当然也会更新小说爬取&#xff0c;和百度翻译&#xff0c;百度小姐姐的爬取&#xff0c;的对比爬取。总结嘛&#xff01;&#xff01;&#xff01;加…

第七篇:SQL语法-DML-数据操作语言

DML英文全称是Data Manipulation Language(数据操作语言)&#xff0c;用来对数据库中表的数据记录进行增删改操作。它主要包含以下操作&#xff0c; 添加数据(INSERT)修改数据(UPDATE)删除数据(DELETE) 一&#xff0c;添加数据(INSERT) 注意&#xff1a; 插入数据时&#xff0c…

解析基于检索排序的知识图谱问答系统

目录 前言1 问句的表示与语义理解1.1 问句表示的重要性1.2 端到端网络的优势 2 知识图谱中的排序问题2.1 知识图谱的核心作用2.2 查询匹配的转化与排序问题2.3 实体链接的关键性2.4 路径的构建与系统优化 3 难点与挑战3.1 实体链接、命名实体识别和消歧3.2 排序模型的挑战 4 优…

【C++】模版初阶

目录 泛函编程 函数模版 概念 格式 原理 实例化 模版函数的匹配原则 类模板 定义格式 泛函编程 如何实现一个通用的交换函数呢&#xff1f; void Swap(int& left, int& right) {int temp left;left right;right temp; } void Swap(double& left, dou…

Java中锁的应用

文章目录 前言一、场景描述二、加锁1.synchronized2.ReentrantLock 三、扩展1.ThreadLocal 总结 前言 在多线程场景下&#xff0c;多个线程同时对共享变量进行操作是存在风险的&#xff0c;这时候就需要加锁来保证数据的正确性。 一、场景描述 我这里有5个无人机,准备卖到乌克…

去除vue自带的边距

使用vue时发现总有去不掉的外边距&#xff0c;在index.vue里面怎样设置样式都不管用 查阅资料后发现要在vue项目自带的index.html文件内添加下面的样式代码才行 <style>*{margin: 0;padding: 0;}body,html{margin: 0;padding: 0;} </style>

代码随想录算法训练营day50 || 57. 爬楼梯,322. 零钱兑换,279.完全平方数

讲解链接&#xff1a; 代码随想录 动态规划之完全背包&#xff0c;装满背包最少的物品件数是多少&#xff1f;| LeetCode&#xff1a;322.零钱兑换_哔哩哔哩_bilibili 动态规划之完全背包&#xff0c;换汤不换药&#xff01;| LeetCode&#xff1a;279.完全平方数_哔哩哔哩_bil…

多表查询

目录 统计出一张数据表中的数据量 查询 dept 表中的数据量 查询 emp 表中的数据量 实现 emp 与 dept 的多表查询 笛卡尔积 消除笛卡尔积 把数据表 emp 的别名定为 e&#xff0c;数据表 dept 的别名定为 d&#xff0c;然后在查询中分别使用 e 和 d 代替这两个表 Oracle从…

【MATLAB】PSO_BP神经网络回归预测(多输入多输出)算法原理

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 PSO-BP神经网络回归预测&#xff08;多输入多输出&#xff09;算法是一种结合粒子群优化算法&#xff08;PSO&#xff09;和反向传播&#xff08;BP&#xff09;神经网络的混合算法。该算…

在小区门口开什么店比较好?把握商机从这里开始

作为一位资深的鲜奶吧创业者&#xff0c;我已经在这个行业摸爬滚打了五年。这五年的时间里&#xff0c;我见证了社区商业的繁荣与变迁&#xff0c;也深刻体会到了在小区门口开店的商机与挑战。今天&#xff0c;我想和大家分享一些关于在小区门口开店的见解&#xff0c;特别是针…

js中正则表达式的详解(应用场景)

文章目录 一、是什么二、匹配规则正则表达式标记贪婪模式懒惰模式分组 三、匹配方法str.match(regexp)str.matchAll(regexp)str.search(regexp)str.replace(regexp)str.split(regexp)regexp.exec(str)regexp.test(str) 四、应用场景参考文献 一、是什么 正则表达式是一种用来匹…

Android 9.0 任务栏中清除掉播放器的进程,状态栏仍有音乐播放器状态问题的解决

1.概述 在9.0的rom定制化开发中,在点击系统自带的播放器以后,播放音乐的时候,在最近任务栏recents列表中,点击全部清除,发现音乐播放器还在播放音乐,导致出现bug,完整的 解决方法,肯定是需要点击全部清除以后,音乐播放器也被杀掉进程,接下来分析下这个移除任务栏流程…

rtt设备io框架面向对象学习-adc设备

目录 1.adc设备基类2.adc设备基类的子类3.初始化/构造流程3.1设备驱动层3.2 设备驱动框架层3.3 设备io管理层 4.总结5.使用 1.adc设备基类 此层处于设备驱动框架层。也是抽象类。 在/ components / drivers / include / drivers 下的adc.h定义了如下adc设备基类 struct rt_ad…

寒假作业-day11

1>编程实现二维数组的杨辉三角 2>编程实现二维数组计算每一行的和以及列和 3>编程实现二维数计算第二大值 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #include<string.h>void yanghui(int n){int arr[n][n];for (int i 0; i <…

从零开始实现消息队列(一)

从零开始实现消息队列 .什么是消息队列需求分析核心概念模型 . 什么是消息队列 相信大家都了解过阻塞队列和生产者消费者模型,而阻塞队列最大的用途,就是用于实现生产者消费者模型,生产者消费者模型有以下好处: 解耦合 解释: 当主机A给主机B发消息时,A给B发送请求,B给A返回响应…

app逆向-⽹络请求库Retrofit2

文章目录 一、前言二、POST应用三、GET应用 一、前言 Retrofit2 是基于 OkHttp 构建的 RESTful HTTP 客户端&#xff0c;专门用于简化 HTTP 请求的过程&#xff0c;尤其是用于访问 RESTful API。 Retrofit2 提供了一个声明式的方式来定义 REST API 接口&#xff0c;通过注解来…