当前位置:网站首页>leetcode刷题:二叉树18(最大二叉树)
leetcode刷题:二叉树18(最大二叉树)
2022-07-05 19:52:00 【涛涛英语学不进去】
654.最大二叉树
给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:
- 二叉树的根是数组中的最大元素。
- 左子树是通过数组中最大值左边部分构造出的最大二叉树。
- 右子树是通过数组中最大值右边部分构造出的最大二叉树。
通过给定的数组构建最大二叉树,并且输出这个树的根节点。
示例 :

提示:
给定的数组的大小在 [1, 1000] 之间。
遍历,找最大值和其位置。数组分割为左右子树数组。创建结点添加左右子树。递归终止条件为左右数组都为空,即为叶子结点。
package com.programmercarl.tree;
/** * @ClassName ConstructMaximumBinaryTree * @Descriotion TODO * @Author nitaotao * @Date 2022/7/5 15:45 * @Version 1.0 * 654. 最大二叉树 * https://leetcode.cn/problems/maximum-binary-tree/ **/
public class ConstructMaximumBinaryTree {
public TreeNode constructMaximumBinaryTree(int[] nums) {
if (nums.length == 0) {
return null;
}
int max = -1;
int maxIndex = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] > max) {
max = nums[i];
maxIndex = i;
}
}
//找到当前最大值
TreeNode root = new TreeNode(nums[maxIndex]);
// 6 - 3 = 3
int[] leftNums = new int[maxIndex];
// 6 - 3 - 1 = 2
int[] rightNums = new int[nums.length - maxIndex - 1];
for (int i = 0; i < nums.length; i++) {
if (i < maxIndex) {
leftNums[i] = nums[i];
} else if (i > maxIndex) {
rightNums[i - maxIndex - 1] = nums[i];
}
}
// System.out.println(leftNums);
// System.out.println(rightNums);
root.left = constructMaximumBinaryTree(leftNums);
root.right = constructMaximumBinaryTree(rightNums);
return root;
}
public static void main(String[] args) {
new ConstructMaximumBinaryTree().constructMaximumBinaryTree(new int[]{
3,2,1,6,0,5});
}
}

边栏推荐
- Parler de threadlocal insecurerandom
- 常用运算符与运算符优先级
- 函数的概念及语法
- 什么是面上项目
- Reinforcement learning - learning notes 4 | actor critical
- 【硬核干货】数据分析哪家强?选Pandas还是选SQL
- third-party dynamic library (libcudnn.so) that Paddle depends on is not configured correctl
- 【无标题】
- Fundamentals of deep learning convolutional neural network (CNN)
- Debezium series: record the messages parsed by debezium and the solutions after the MariaDB database deletes multiple temporary tables
猜你喜欢
![[OBS] qstring's UTF-8 Chinese conversion to blog printing UTF-8 char*](/img/cc/172684664a9115943d45b0646ef110.png)
[OBS] qstring's UTF-8 Chinese conversion to blog printing UTF-8 char*

Force buckle 1200 Minimum absolute difference

深度學習 卷積神經網絡(CNN)基礎

Using repositoryprovider to simplify the value passing of parent-child components

third-party dynamic library (libcudnn.so) that Paddle depends on is not configured correctl
PHP uses ueditor to upload pictures and add watermarks

Add data to excel small and medium-sized cases through poi

建立自己的网站(16)

Worthy of being a boss, byte Daniel spent eight months on another masterpiece

Millimeter wave radar human body sensor, intelligent perception of static presence, human presence detection application
随机推荐
IBM has laid off 40 + year-old employees in a large area. Mastering these ten search skills will improve your work efficiency ten times
Explain in detail the functions and underlying implementation logic of the groups sets statement in SQL
手机股票开户安全吗?靠不靠谱啊?
c——顺序结构
Realizing deep learning framework from zero -- LSTM from theory to practice [practice]
完爆面试官,一线互联网企业高级Android工程师面试题大全
Let's talk about threadlocalinsecurerandom
Complete interview questions for interviewers and senior Android engineers in front-line Internet enterprises
城链科技数字化创新战略峰会圆满召开
Force buckle 1200 Minimum absolute difference
力扣 729. 我的日程安排表 I
面试官:Redis中集合数据类型的内部实现方式是什么?
如何在2022年更明智地应用智能合约?
Is it safe for Anxin securities to open an account online?
深度學習 卷積神經網絡(CNN)基礎
Analysis of openh264 decoded data flow
third-party dynamic library (libcudnn.so) that Paddle depends on is not configured correctl
Is it safe for Guosen Securities to open an account online?
How to apply smart contracts more wisely in 2022?
What is the function of okcc call center