代码随想录算法刷题训练营day20

代码随想录算法刷题训练营day20:LeetCode(654)最大二叉树、LeetCode(617)合并二叉树、LeetCode(700)二叉搜索树中的搜索、LeetCode(700)二叉搜索树中的搜索、LeetCode(98)验证二叉搜索

LeetCode(654)最大二叉树
题目
在这里插入图片描述

代码

import java.util.Arrays;/*** 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 TreeNode constructMaximumBinaryTree(int[] nums) {//递归----判断终止条件if(nums.length==0){return null;}int data[]=getMaxIndexAndValue(nums);int dataIndex=data[0];int dataValue=data[1];TreeNode root=new TreeNode(dataValue);//拆分数组int[] leftNums=Arrays.copyOfRange(nums, 0, dataIndex);int[] rightNums=Arrays.copyOfRange(nums, dataIndex+1, nums.length);root.left=constructMaximumBinaryTree(leftNums);//左边构建左子树root.right=constructMaximumBinaryTree(rightNums);//右边构建右子树return root;}//定义一个函数用于获取数组中的最大值和对应的数组下标public int[] getMaxIndexAndValue(int[] nums){int[] result=new int[2];int index=0;int sum=0;for (int i = 0; i < nums.length; i++) {if(nums[i]>sum){sum=nums[i];index=i;}    }result[0]=index;result[1]=sum;//记住最大值的下标和对应的值return result;}
}

LeetCode(617)合并二叉树
题目
在这里插入图片描述

代码

/*** 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 TreeNode mergeTrees(TreeNode root1, TreeNode root2) {//先处理边角条件if(root1==null&&root2==null){return null;}if(root1==null&&root2!=null){return root2;}if(root1!=null&&root2==null){return root1;}TreeNode root=getMergeTrees(root1,root2);return root;}//单独构建一个函数用于处理public TreeNode getMergeTrees(TreeNode root1,TreeNode root2){//终止条件if(root1==null&&root2==null){return null;}/* if(root1==null){return root2;//树1为空即返回树2}if(root2==null){return root1;} */TreeNode root=new TreeNode();if(root1!=null&&root2==null){/* root.val=root1.val;return root; *///还会往下面走,所以空指针异常/* root.val=root1.val; */return root1;//树二已经没有了,需要把树1所有子树全部返回//}if(root1==null&&root2!=null){/* root.val=root2.val;return root; */return root2;}//先序遍历----同时遍历到同一位置if(root1!=null&&root2!=null){int data=root1.val+root2.val;root.val=data;}//左子树遍历root.left=getMergeTrees(root1.left, root2.left);//右子树遍历root.right=getMergeTrees(root1.right, root2.right);return root;}
}

LeetCode(700)二叉搜索树中的搜索
题目
在这里插入图片描述

代码

/*** 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 TreeNode searchBST(TreeNode root, int val) {//递归----判断终止条件if(root==null){return null;}//前序遍历if(root.val==val){return root;}TreeNode result=new TreeNode();//左边//左子树//二叉搜索树//左边小于中间,右边大于中间if(val<root.val){//往左边走result=searchBST(root.left, val);}if(val>root.val){//右子树result=searchBST(root.right, val);}return result;}
}

LeetCode(98)验证二叉搜索
题目
在这里插入图片描述

代码

import java.util.ArrayList;
import java.util.List;/*** 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 boolean isValidBST(TreeNode root) {//定义一个集合,遍历树存储到集合里面//按中序遍历存储数据,若是二叉搜索树,则是一个升序数组List<Integer> dateTree=new ArrayList<>();getDateTree(root,dateTree);for (int i = 0; i < dateTree.size()-1; i++) {if(dateTree.get(i)>=dateTree.get(i+1)){return false;}   }return true;}public void getDateTree(TreeNode root,List<Integer> dateTree){if(root==null){return;}getDateTree(root.left, dateTree);//左子树dateTree.add(root.val);getDateTree(root.right, dateTree);//右子树}}

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

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

相关文章

vue3.0 + 动态加载组件 + 全局注册组件

首先 vue 动态加载组件使用的是 component 标签&#xff0c;并通过设置组件的is 属性来指定要渲染的组件。例如&#xff1a; <component :is"currentComponent"></component>其中&#xff0c;currentComponent 是一个变量&#xff0c;它的值可以是以下几…

搭建幻兽帕鲁需要什么样的服务器

作为一个开放世界生存制造类游戏《幻兽帕鲁》收获了空前绝后的热度&#xff0c;玩家们在游戏中通过在地图上捕捉收集到的“帕鲁”进行训练&#xff0c;合理利用他们的能力进行战斗&#xff0c;建立自己的家园、开辟新的世界、解锁新的冒险情节&#xff0c;获取更多游戏信息增加…

【数据结构 01】栈

一、原理 栈通常从数据结构和内存空间两个角度解释&#xff0c;从数据结构的角度&#xff0c;栈是一种线性结构表&#xff0c;只允许在固定的一端进行插入和删除元素&#xff0c;从内存空间角度&#xff0c;操作系统为函数和变量分配的内存空间通常在栈区&#xff0c;但是无论…

怎么查询鸿蒙真机支持的API版本

1、打开设备的开发者模式与USB调试并通过USB连接上电脑。 2、管理员身份运行cmd。 3、进入hdc.exe所在目录。(鸿蒙OS IDE的SDK下载目录中) 4、输入hdc shell&#xff0c;进入特殊模式 5、输入 getprop hw_sc.build.os.apiversion 查看API版本 6、输入 getprop hw_sc.build…

第九节HarmonyOS 常用基础组件23-Menu、MenuItem、MenuItemGroup

1、描述 Menu&#xff1a;以垂直列表形式显示的菜单。 MenuItem&#xff1a;用来展示菜单Menu中具体的item菜单项。 MenuItemGroup&#xff1a;该组件用来展示菜单MenuItem的分组。 2、子组件 Menu&#xff1a;包含MenuItem、MenuItemGroup子组件。 MenuItem&#xff1a;…

安全测试-pikachu靶场搭建

pikachu靶场搭建 文章目录 pikachu安装步骤 pikachu pikachu是一个自带web漏洞的应用系统&#xff0c;在这里包含了常见的web安全漏洞&#xff0c;也就是练习的靶场。 练习内容包括&#xff1a; 1.暴力破解 2.XSS 3.CSRF 4.SQL注入 5.RCE 6.文件包含 7.不安全的文件下载 8.不安…

【C++】类和对象(二)——构造/析构/拷贝构造函数

&#x1f497;个人主页&#x1f497; ⭐个人专栏——C学习⭐ &#x1f4ab;点击关注&#x1f929;一起学习C语言&#x1f4af;&#x1f4ab; 目录 导读1. 默认成员函数2. 构造函数2.1 引入2.2 特性2.3 默认构造函数 3. 析构函数3.1 概念3.2 特性3.3 默认析构函数 4. 拷贝构造函…

大数据 - Spark系列《二》- 关于Spark在Idea中的一些常用配置

上一篇&#xff1a; 大数据 - Spark系列《一》- 从Hadoop到Spark&#xff1a;大数据计算引擎的演进-CSDN博客 目录 1. &#x1f959;Idea中配置Live Templates来快速生成代码片段 2. &#x1f959;Idea中配置文件模板自定义初始代码 3.&#x1f959;设置spark-submit提交程…

【排序算法】C语言实现随机快排,巨详细讲解

文章目录 &#x1f680;前言&#x1f680;快排的核心过程partition&#xff08;划分过程&#xff09;&#x1f680;快排1.0&#x1f680;随机快速排序&#x1f680;稳定性 &#x1f680;前言 铁子们好啊&#xff01;继续我们排序算法今天要讲的是快排&#xff0c;通常大家所说…

HBase表结构

HBase是非关系型数据库&#xff0c;是高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库。 HBase使用场景 大规模数据存储&#xff1a;如日志记录、数据库备份等。实时数据访问&#xff1a;如实时搜索、实时分析等。高性能读写&#xff1a;如高并发、低延迟的读写操…

【SHUD】Windows下安装rSHUD

目录 说明一、安装R二、安装rSHUD自动安装依赖手动安装依赖安装rShud说明 rSHUD官网 rSHUD功能: 空间数据分析和操作。处理矢量和栅格数据,建立非结构三角网络。读/写SHUD模型的输入文件读取SHUD模型输出文件自动化模型调参水文数据时间序列分析二维三维数据可视化GIS空间数…

oj赛(双周赛第二十次)

目录 碰碰车 小码哥与机器人 小码哥的跳棋游戏 竖直打印机 排队 邮箱地址 碰碰车 难度:钻石 占用内存:128 M时间限制:1秒 游乐园玩碰碰车&#xff0c;其中有一种碰碰车是在一条直线上行驶。该碰碰车有一个初始朝向和初始位置&#xff0c;并且以每秒一个单位的速度向初始方…

多线程代码案例之单例模式

作者简介&#xff1a; zoro-1&#xff0c;目前大二&#xff0c;正在学习Java&#xff0c;数据结构&#xff0c;javaee等 作者主页&#xff1a; zoro-1的主页 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f496; 多线程代码案例之单例模式 单例…

【数据结构 04】单链表

一、链表简介 链表是一种物理存储结构上非连续的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 链表在结构上的分类&#xff1a; 1. 带头结点或无头结点 2. 单向或双向 3. 循环或非循环 虽然链表有多种结构类型&#xff0c;但是我么在实际开发中…

【RT-DETR有效改进】Bi-FPN高效的双向特征金字塔网络(附yaml文件+完整代码)

👑欢迎大家订阅本专栏,一起学习RT-DETR👑 一、本文介绍 本文给大家带来的改进机制是BiFPN双向特征金字塔网络,其是一种特征融合层的结构,也就是我们本文改进RT-DETR模型中的Neck部分,它的主要思想是通过多层级的特征金字塔和双向信息传递来提高精度。本文给大家带…

甘肃推动“安全石窟”建设,新技术助力文物预防性保护

一、甘肃用“智能化”技术让文物“重获新生” 文物保护与历史遗产和文化瑰宝的安全相关。甘肃有莫高窟、麦积山、炳灵寺等石窟寺&#xff0c;背负着历史的沧桑。但是&#xff0c;岁月侵蚀使这些文物状态变得令人堪忧。环境的微妙变化和温度和湿度的波动会对其导致不可逆转的伤…

浮点数加、减运算步骤

一、浮点数介绍 1.1 浮点数格式&#xff1a; 精度位数格式单精度 float4个字节32位符号位1位&#xff0c;阶码8位&#xff0c;尾数23位双精度 double8个字节64位符号位1位&#xff0c;阶码11位&#xff0c;尾数52位 1.2 浮点的表示方法 浮点数在机器中的形式如下所示&#x…

C++数据结构与算法——链表

C第二阶段——数据结构和算法&#xff0c;之前学过一点点数据结构&#xff0c;当时是基于Python来学习的&#xff0c;现在基于C查漏补缺&#xff0c;尤其是树的部分。这一部分计划一个月&#xff0c;主要利用代码随想录来学习&#xff0c;刷题使用力扣网站&#xff0c;不定时更…

Linux初始相关配置

前言 在学完了Linux的相关基础命令后&#xff0c;在正式使用Linux系统之前&#xff0c;我觉得配置一些东西是很有意义的。 文章目录 前言1.权限配置&#xff0c;普通用户无法sudo提权2.vim配置3.vim其他操作4.动静态库5.gcc/g6.程序翻译的过程7.make/makefile8.cmake/CMakeLis…

【Unity3D小功能】Unity3D中设置Text行首不出现标点符号

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 在开发中会遇到Text的文本内容行首出现标点符号的情况&#xf…