【LeetCode+JavaGuide打卡】Day19|654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

学习目标:

  • 654.最大二叉树
  • 617.合并二叉树
  • 700.二叉搜索树中的搜索
  • 98.验证二叉搜索树

学习内容:

654.最大二叉树

题目链接&&文章讲解
给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建:

  1. 创建一个根节点,其值为 nums 中的最大值。
  2. 递归地在最大值 左边 的 子数组前缀上 构建左子树。
  3. 递归地在最大值 右边 的 子数组后缀上 构建右子树。
    返回 nums 构建的 最大二叉树 。
class Solution {public TreeNode constructMaximumBinaryTree(int[] nums) {return construct(nums, 0, nums.length - 1);}//构造二叉树 前序:中 左 右  //左闭右闭区间public TreeNode construct(int[] nums, int begin, int end) {//确定终止条件:数组大小=1 叶子节点if(begin == end) return new TreeNode(nums[begin]);//处理逻辑int maxValue = 0;int index = begin;//确定数组最大值maxValue以及最大值下标indexfor(int i = begin; i <= end; i++){if(nums[i] > maxValue) {maxValue = nums[i];index = i;}}//中TreeNode node = new TreeNode(maxValue);//左if(index > begin){node.left = construct(nums, begin, index - 1);}//右if(index < end){node.right= construct(nums, index + 1, end);}return node;}
}

617.合并二叉树

题目链接 &&文章讲解
给你两棵二叉树: root1 和 root2 。

想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。

返回合并后的二叉树。

注意: 合并过程必须从两个树的根节点开始。

class Solution {public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {//终止条件if(root1 == null) return root2;if(root2 == null) return root1;//处理逻辑//修改原root1root1.val = root1.val + root2.val;root1.left = mergeTrees(root1.left, root2.left);root1.right = mergeTrees(root1.right, root2.right);return root1;}
}

700.二叉搜索树中的搜索

题目链接 &&文章讲解
给定二叉搜索树(BST)的根节点 root 和一个整数值 val。

你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。

//递归法
class Solution {public TreeNode searchBST(TreeNode root, int val) {if(root == null || root.val == val) return root;TreeNode node = new TreeNode();if(root.val > val) node = searchBST(root.left,val);if(root.val < val) node = searchBST(root.right,val);return node;}
}//迭代法
class Solution {public TreeNode searchBST(TreeNode root, int val) {while(root != null){if(val < root.val) root = root.left;else if(val > root.val) root = root.right;else break;}return root;}
}

98.验证二叉搜索树

题目链接&&文章讲解

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。

有效 二叉搜索树定义如下:

节点的左子树只包含 小于 当前节点的数。
节点的右子树只包含 大于 当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。

class Solution {public boolean isValidBST(TreeNode root) {return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE);}public boolean isValidBST(TreeNode node, long lower, long upper) {//确定终止条件if (node == null) {return true;}if (node.val <= lower || node.val >= upper) {return false;}boolean left = isValidBST(node.left, lower, node.val);boolean right = isValidBST(node.right, node.val, upper);return left && right; }
}class Solution {private TreeNode pre = null; public boolean isValidBST(TreeNode node){//终止条件if(node == null) return true;boolean left = isValidBST(node.left);if(pre != null &&node.val <= pre.val) return false;pre = node;boolean right = isValidBST(node.right);return left && right;}
}

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

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

相关文章

“无限交互,全新驾驶体验!智能语音小车,与您共同开创未来出行。”#51单片机最终项目《智能语音小车》【上】

"无限交互&#xff0c;全新驾驶体验&#xff01;智能语音小车&#xff0c;与您共同开创未来出行。”#51单片机最终项目《智能语音小车》【上】 前言预备知识1. L9110S电机控制器接线1.1 L9110S概述1.2 L9110S IO口描述1.3 L9110S 实物图1.4 L9110S与单片机接线 2. L9110前…

java基础 -- 事件监听器

要实现一个事件监听器&#xff0c;您可以使用Java中的事件模型和接口。以下是一个简单的示例&#xff0c;演示如何创建和使用一个事件监听器&#xff1a; 创建事件类&#xff08;Event Class&#xff09;&#xff1a; import java.util.EventObject;public class MyEvent ext…

ComfyUI添加IP白名单功能

AI生图很火&#xff0c;相信你对ComfyUI不陌生&#xff0c;查看ComfyUI的源码可以发现它是使用aiohttp来作为服务端的。那么我们在使用ComfyUI的时候可能需要做一些安全的限制&#xff0c;接下来我们将探讨如何在 ComfyUI 中添加 IP 白名单功能&#xff0c;以确保只有特定的用户…

PostgreSQL按日期列创建分区表

在PostgreSQL中&#xff0c;实现自动创建分区表主要依赖于表的分区功能&#xff0c;这一功能从PostgreSQL 10开始引入。分区表可以帮助管理大量数据&#xff0c;通过分布数据到不同的分区来提高查询效率和数据维护的便捷性。以下是在PostgreSQL中自动创建分区表的一般步骤&…

【Git】Gitbash使用ssh 上传本地项目到github

SSH Git上传项目到GitHub&#xff08;图文&#xff09;_git ssh上传github-CSDN博客 前提 ssh-keygen -t rsa -C “自己的github电子邮箱” 生成密钥&#xff0c;公钥保存到自己的github的ssh里 1.先创建一个仓库&#xff0c;复制ssh地址 git init git add . git commit -m …

GEE必须会教程—跳舞的线(字符串类型)

字符串&#xff0c;GEE上跳舞的线&#xff01; GEE学习之路漫长&#xff0c;跟着小编一起走进今天的数据类型的学习。字符串是各大编程语言的常用数据类型&#xff0c;我们今天需要了解GEE平台上字符串的定义、以及常用的方法。 1.定义字符串 //字符串构造 var base_str &q…

C#面:.NET中所有类型的基类是什么

System.Object 是C# .NET中所有类型的基类&#xff0c;它提供了一些通用的方法和属性&#xff0c;以及对象的类型信息和引用比较等功能。 例如&#xff1a;System.ObjectToString()&#xff0c;Equals()&#xff0c;GetHashCode() 等。 由于所有类型都继承自 System.Object&a…

「Java同步原理与底层实现解析」

原理概要&#xff1a; java虚拟机中的同步基于进入与结束Monitor对象实现&#xff0c;无论是显式同步&#xff08;同步代码块进入在jvm是根据monitorenter标志、结束是monitorexit标志&#xff0c;那最后一个是monitorexit是异常结束时被执行的释放指令&#xff09;、隐式同步…

图像预处理技术与算法

图像预处理是计算机视觉和图像处理中非常关键的第一步,其目的是为了提高后续算法对原始图像的识别、分析和理解能力。以下是一些主要的图像预处理技术: 1.图像增强: 对比度调整:通过直方图均衡化(Histogram Equalization)等方法改善图像整体或局部的对比度。 伽玛校正:…

MT4技术分析工具介绍:让你更好地把握市场趋势

在外汇交易市场中&#xff0c;技术分析是一种常用的分析手段&#xff0c;而MT4作为外汇交易中广泛使用的交易平台&#xff0c;拥有丰富的技术分析工具&#xff0c;能够帮助交易者更好地把握市场趋势。本文将介绍几款常用的MT4技术分析工具&#xff0c;帮助读者更好地理解和运用…

STM32 输入捕获模式测频率

单片机学习&#xff01; 目录 文章目录 前言 一、输入捕获测频率配置步骤 二、代码示例及注意事项 2.1 RCC开启时钟 2.2 GPIO初始化 2.3 配置时基单元 2.4 配置输入捕获单元 2.5 选择从模式的触发源 2.6 配置从模式为Reset 2.7 开启定时器 总结 前言 博文介绍如何配置输入捕获电…

OpenAI 全新发布文生视频模型 Sora,支持 60s 超长长度,有哪些突破?将带来哪些影响?

Sora大模型简介 OpenAI 的官方解释了在视频数据基础上进行大规模训练生成模型的方法。 我们下面会摘取其中的关键部分罗列让大家快速get重点。 喜欢钻研的伙伴可以到官网查看技术报告&#xff1a; https://openai.com/research/video-generation-models-as-world-simulator…

AI破局俱乐部,你要了解的都在这里

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),代码实现篇

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握。…

使用VBA将多个txt批量转换成excel表并保存

VBA将多个txt批量转换成excel表并保存 Sub ykcbf() Set fso CreateObject("scripting.filesystemobject")Application.ScreenUpdating FalseApplication.DisplayAlerts Falsep ThisWorkbook.Path & ""On Error Resume NextFor Each f In fso.GetF…

Linux文件监控方法

Linux系统开发程序&#xff0c;有时候需要监控配置文件的变化&#xff0c;做出相应操作&#xff0c;下面将介绍常用的文件、目录监控方法&#xff1a; 函数介绍&#xff1a; 1.Inotify系列函数&#xff1a; Inotify_init&#xff08;void&#xff09; 系统返回一个文件描述…

mac下mysql 常用命令

mysql启动命令 在Mac OS X启动和停止MySQL服务的命令&#xff0c; 启动MySQL服务 sudo /usr/local/mysql/support-files/mysql.server start 停止MySQL服务 sudo /usr/local/mysql/support-files/mysql.server stop 重启MySQL服务 sudo /usr/local/mysql/support-files/mys…

大模型量化技术原理-LLM.int8()、GPTQ

近年来&#xff0c;随着Transformer、MOE架构的提出&#xff0c;使得深度学习模型轻松突破上万亿规模参数&#xff0c;从而导致模型变得越来越大&#xff0c;因此&#xff0c;我们需要一些大模型压缩技术来降低模型部署的成本&#xff0c;并提升模型的推理性能。 模型压缩主要分…

不知如何获取1688工厂档案信息,你还在为此烦恼吗?

阿里巴巴集团旗下的B2B电子商务网站&#xff0c;提供海量优质商品&#xff0c;为采购商和供应商提供交流、合作、采购等服务&#xff0c;是很多没有货源优势的电商卖家首选的货源途径&#xff0c;也是国内最大、货源种类最齐全的货源网站。 不少做跨境电商无货源的朋友都想要1…

MySQL学习记录——십삼 视图及用户、权限管理

文章目录 1、视图2、用户管理3、权限管理 1、视图 视图把查询出来的结果以表结构的形式存储起来&#xff0c;视图和基表有关系&#xff0c;两者的数据变化都会互相影响。 在查询时&#xff0c;假如要经常查询一条记录&#xff0c;select …&#xff0c;那么为了方便&#xff…