最大二叉树

news/2024/4/18 18:49:56/文章来源:https://blog.csdn.net/Learner_QUN/article/details/130043200

1题目

给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建:

创建一个根节点,其值为 nums 中的最大值。
递归地在最大值 左边 的 子数组前缀上 构建左子树。
递归地在最大值 右边 的 子数组后缀上 构建右子树。
返回 nums 构建的 最大二叉树 。

示例 1:


输入:nums = [3,2,1,6,0,5]
输出:[6,3,5,null,2,0,null,null,1]
解释:递归调用如下所示:
- [3,2,1,6,0,5] 中的最大值是 6 ,左边部分是 [3,2,1] ,右边部分是 [0,5] 。
    - [3,2,1] 中的最大值是 3 ,左边部分是 [] ,右边部分是 [2,1] 。
        - 空数组,无子节点。
        - [2,1] 中的最大值是 2 ,左边部分是 [] ,右边部分是 [1] 。
            - 空数组,无子节点。
            - 只有一个元素,所以子节点是一个值为 1 的节点。
    - [0,5] 中的最大值是 5 ,左边部分是 [0] ,右边部分是 [] 。
        - 只有一个元素,所以子节点是一个值为 0 的节点。
        - 空数组,无子节点。
示例 2:


输入:nums = [3,2,1]
输出:[3,null,2,null,1]

 

提示:

1 <= nums.length <= 1000
0 <= nums[i] <= 1000
nums 中的所有整数 互不相同

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/maximum-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2链接

题目链接:654. 最大二叉树 - 力扣(LeetCode)

视频链接:一起操作两个二叉树?有点懵!| LeetCode:617.合并二叉树_哔哩哔哩_bilibili

3解题思路

最大二叉树的构建过程如下:

 

 构造树一般采用的是前序遍历,因为先构造中间节点,然后递归构造左子树和右子树。

总体而言就找到最大值,然后分开左右区间,依次递归

4代码

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:// 定义一个递归函数来构建最大二叉树,left和right表示数组nums的左右边界TreeNode* traversal(vector<int>& nums, int left, int right) {// 1. 如果左边界不小于右边界,说明当前区间内没有元素,返回空指针if (left >= right) return nullptr;// 2. 找到数组nums在[left, right)范围内的最大值的下标maxValueIndexint maxValueIndex = left;for (int i = left+1; i < right; i++) {if (nums[i] > nums[maxValueIndex]) maxValueIndex = i;}// 3. 创建一个新的节点,值为nums[maxValueIndex]TreeNode* root = new TreeNode(nums[maxValueIndex]);// 4. 递归构建左子树和右子树root->left = traversal(nums, left, maxValueIndex);root->right = traversal(nums, maxValueIndex+1, right);// 5. 返回根节点return root;}// 定义一个函数来调用递归函数traversal,构建最大二叉树TreeNode* constructMaximumBinaryTree(vector<int>& nums) {return traversal(nums, 0, nums.size());}
};

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

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

相关文章

解决PIE-Engine中python虚拟环境下使用jupyter notebook时PIE模块不存在

01 非本博客问题的一些探讨 具体环境安装流程查看官网教程&#xff1a;PIE-Engine 遥感与地理信息云服务平台 (piesat.cn) 若在python窗口都无法导入PIE&#xff0c;那么就是你PIE-E都没有成功pip安装到你的python中。若是你确信你已经成功安装了&#xff0c;那么可能存在你安…

【东北大学秦皇岛分校计算机专硕考研二战回忆录】

东北大学秦皇岛分校计算机专硕考研二战回忆录一、 自我情况介绍二、 22年4-5月份回忆三、 22年6月份回忆四、 22年7&#xff0c;8月份回忆五、 22年考试之前回忆六、 23年出成绩之前七、 23年出成绩-复试八、 复试九、 复试之后十、 总结&#xff1a;写在文章开始&#xff1a;本…

golang包名带汉字无法编译

现象 最近在新电脑安装go环境&#xff0c;发现 golang 包名如果有汉字就不能编译运行。 具体来讲&#xff0c;就是 go mod tidy 报错 ‘invalid char’ 但是&#xff0c;我在以前的电脑上运行 go mod tidy 没有问题 原因 我对比了 go sdk 版本&#xff0c;旧电脑用 go 1.13…

SpringBoot 实现多个子域共享 cookie

SpringBoot 实现多个子域共享 cookie项目信息cookie 共享需求如何实现环境配置配置域SpringBoot 配置 https 访问后端代码验证验证后端解析 cookie项目信息 使用SpringBoot web框架&#xff0c;版本号 2.7.10 <dependency><groupId>org.springframework.boot</…

第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 A 组 C题

平方差问题描述格式输入格式输出样例输入样例输出评测用例规模与约定解析参考程序问题描述 格式输入 输入一行包含两个整数 L, R&#xff0c;用一个空格分隔。 格式输出 输出一行包含一个整数满足题目给定条件的 x 的数量。 样例输入 1 5 样例输出 4 评测用例规模与约定 对…

Android Studio中通过SSH Key上传代码到Github

文章目录GitHub中的SSH配置一 检查SSH Key信息二 生成SSH Key信息三 获取SSH Key里的公钥内容四 Github上配置公钥GitHub中的SSH配置 我们在日常开发中请求登录后&#xff0c;服务端会根据登录信息生成一个该用户的唯一标识&#xff0c;如sessionId或者token&#xff0c;后续客…

深度学习中的自动编码器

嘈杂的数据仍然是让我们数据科学家夜不能寐的最常见的机器学习问题之一。 深度学习面对高维的非结构化数据&#xff08;图像、语音、文本&#xff09;&#xff0c;如何获取特征信息问题也是最头疼的问题。 然而&#xff0c;幸运的是&#xff0c;我们现在可以利用各种技术和技巧…

docker 执行springboot 报数据源找不到

本地运行springboot项目完全正常&#xff0c;在docker中开启容器&#xff0c;报错&#xff0c;如下&#xff1a; 解决方案&#xff1a;特别简单&#xff08;经过摸爬滚打得出来的结论&#xff09; <resources><resource><directory>src/main/resources</d…

Spark - AUC、Accuracy、Precision、Recall、F1-Score 理论与实战

一.引言 推荐场景下需要使用上述指标评估离、在线模型效果&#xff0c;下面对各个指标做简单说明并通过 spark 程序全部搞定。 二.指标含义 1.TP、TN、FP、FN 搜广推场景下最常见的就是 Ctr 2 分类场景&#xff0c;对于真实值 real 和预测值 pre 分别有 0 和 1 两种可能&…

Windows内核开发

Windows内核开发 Unit01对话框 对话框是一种很特殊的窗口&#xff0c;体现在消息的处理上 //普通窗口处理消息:自定义函数调用缺省消息处理函数 WndProc(...){...DefWindowProc(...); }//对话框窗口处理消息&#xff1a;缺省函数调用自定义函数 缺省函数(...){...自定义函数…

从繁琐的采集工作中解放出来,让拓客变得更高效

近年来&#xff0c;企业拓客发展越来越受到重视&#xff0c;但是拓客的过程中却面临着很多的挑战&#xff0c;其中最为繁琐的工作就是采集工作。采集工作不仅耗费大量的时间和精力&#xff0c;还容易出现误差和遗漏&#xff0c;影响到整个拓客的效率和质量。为了解决这个问题&a…

6.Swagger的实战使用

六.Swagger的实战使用 1.什么是swagger 2.swagger的基本使用 3.swagger实战使用 六.Swagger的实战使用 1.什么是swagger swagger是后端接口文档的生成并且提供ui界面进行测试过去用postman测试 缺点&#xff1a;需要自己写地址&#xff0c;如果项目变了需要自己更改 2.sw…

MySQL事务 【事务操作丨事务四大特性丨事务隔离级别丨事务原理】

在实际的开发过程中&#xff0c;一个业务操作如&#xff1a;转账&#xff0c;往往是要多次访问数据库才能完成的。转账是一个用户扣钱&#xff0c;另一个用户加钱。如果其中有一条 SQL 语句出现异常&#xff0c;这条 SQL 就可能执行失败。 事务是一组操作的集合&#xff0c;它…

计讯物联小型水库雨水情测报与大坝安全监测一体化解决方案,确保水库安全运行

方案背景 防洪治理工程是一项重大的民生工程&#xff0c;也是重大的生态工程。基于我国水灾频发的大背景下&#xff0c;小型水库作为防汛抗洪的重要基础设施&#xff0c;其雨水情测报与大坝安全监测是十分有必要的&#xff0c;不仅可为预防水灾、防汛决策提供大量可靠的数据和资…

深入浅出:理解 RPC 和 Dubbo 架构

简介 Apache Dubbo是一款高性能的Java RPC框架.其前身是阿里巴巴公司开源的一个高性能,轻量级的开源Java RPC框架,可以和Spring框架无缝集成. Dubbo 官网 RPC RPC介绍 Remote Procedure Call 远程过程调用,是分布式架构的核心,按响应方式分以下两种: 同步调用:客户端调用…

CAN通讯协议

1&#xff09; CAN介绍 a) 什么是CAN? b) CAN总线特点 c) CAN应用场景 2&#xff09;CAN物理层 a) CAN物理层特性 b) CAN收发器芯片介绍 3&#xff09;CAN协议层 a) CAN帧种类介绍 b) CAN数据帧介绍 c) CAN位时序介绍 d) CAN总线仲裁 a)、CAN介绍 CAN&#xff08;Controlle…

SpringBoot中配置文件加密及跨域支持

给application.properties文件中的某些值加密,比如数据库账号密码等. 引入依赖 <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.3</version> </dep…

并行分布式计算 并行计算机体系结构

文章目录并行分布式计算 并行计算机体系结构并行计算机结构模型SIMD 单指令多数据流PVP 并行向量处理机SMP 对称多处理机MPP 大规模并行处理机DSM 分布式共享存储多处理机COW 工作站集群总结并行计算机访存模型UMA 均匀存储访问模型NUMA 非均匀存储访问模型COMA 全高速缓存存储…

Nestjs实战干货-概况-控制器-Controller

Controller 控制器 控制器负责处理传入的请求并向客户返回响应。 一个控制器的目的是接收应用程序的特定请求。路由机制控制哪个控制器接收哪些请求。通常&#xff0c;每个控制器有一个以上的路由&#xff0c;不同的路由可以执行不同的动作。 为了创建一个基本的控制器&#…

【游戏逆向】加密坐标浅析

这个游戏里面坐标有很多种存放方式。 例如明文存放的DOUBLE&#xff0c;加密的各种类型。 我们不知道哪一个对于我们是有用的,哪一些只是辅助UI或则掉到LUA虚拟机坑里的数据。 那就根据作用大小来决定,一一尝试吧。 最好去找修改之后有效果的地址&#xff0c;当然只是本地&…