先立个flag吧,坚持每日刷题的小目标,希望自己能坚持下来,如果有需要一起打卡的uu,可以一起监督哈,在菜鸡的路上慢慢变好

题目:最大二叉树

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

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

分析:

首先:给定一个数组,先找出最大值作为这个树的根节点,然后其最大值左边的数组元素即为这棵树的左子树,其右边作为这棵树的右子树,这样不断重复操作,我们就很容易相出递归操作,只要每一次都找去找一个最大值作为新子树的根节点,一直到建树完成,那不就解决了嘛

我们先来写一下大体的框架:

1、我们得有一个有一个for循环查找到最大值,然后为了能够分开根节点左右两边,我们可以定义两个哨兵来确定不会越界

2、定义start, end,递归建树,套用模板就好

3、递归的出口得理解好

public TreeNode buildNode(int start,int end,int [] nums){
if(start <end){
return null;
}
//记录最大值的索引
int index =start;
for(int i =start;i<=end;i++){
if(nums[index] <nums[i]){
index =i;
}
}
//声明一个节点,作为当前子树的根
TreeNode temp = new TreeNode(nums[index],null,null);
//递归建立左子树
temp.left = buildNode(start,index-1,nums);
//递归建立右子树
temp.right = buildNode(index +1,end,nums);
return temp;
}
public TreeNode constructMaximumBinaryTree(int[] nums) {
TreeNode root = buildNode(0, nums.length-1,nums);
return root;
}

总结:

最近在刷二叉树,就分享一道题吧,监督下自己的学习,顺带加强自己的热情吧

LeetCode 654:最大二叉树的更多相关文章

  1. Java实现 LeetCode 654 最大二叉树(递归)

    654. 最大二叉树 给定一个不含重复元素的整数数组.一个以此数组构建的最大二叉树定义如下: 二叉树的根是数组中的最大元素. 左子树是通过数组中最大值左边部分构造出的最大二叉树. 右子树是通过数组中最 ...

  2. Leetcode 654.最大二叉树

    最大二叉树 给定一个不含重复元素的整数数组.一个以此数组构建的最大二叉树定义如下: 二叉树的根是数组中的最大元素. 左子树是通过数组中最大值左边部分构造出的最大二叉树. 右子树是通过数组中最大值右边部 ...

  3. Leetcode之分治法专题-654. 最大二叉树(Maximum Binary Tree)

    Leetcode之分治法专题-654. 最大二叉树(Maximum Binary Tree) 给定一个不含重复元素的整数数组.一个以此数组构建的最大二叉树定义如下: 二叉树的根是数组中的最大元素. 左 ...

  4. LeetCode:翻转二叉树【226】

    LeetCode:翻转二叉树[226] 题目描述 翻转一棵二叉树. 示例: 输入: 4 / \ 2 7 / \ / \ 1 3 6 9 输出: 4 / \ 7 2 / \ / \ 9 6 3 1 题目 ...

  5. 【Leetcode】104. 二叉树的最大深度

    题目 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例:给定二叉树 [3,9,20,null,null,15,7 ...

  6. [LeetCode] 654. Maximum Binary Tree 最大二叉树

    Given an integer array with no duplicates. A maximum tree building on this array is defined as follo ...

  7. LeetCode 654. Maximum Binary Tree最大二叉树 (C++)

    题目: Given an integer array with no duplicates. A maximum tree building on this array is defined as f ...

  8. [LeetCode]654. Maximum Binary Tree最大堆二叉树

    每次找到数组中的最大值,然后递归的构建左右树 public TreeNode constructMaximumBinaryTree(int[] nums) { if (nums.length==0) ...

  9. [LeetCode] Path Sum 二叉树的路径和

    Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...

  10. 【LeetCode题解】二叉树的遍历

    我准备开始一个新系列[LeetCode题解],用来记录刷LeetCode题,顺便复习一下数据结构与算法. 1. 二叉树 二叉树(binary tree)是一种极为普遍的数据结构,树的每一个节点最多只有 ...

随机推荐

  1. FastDFS安装(ARM同样支持)

    一.服务器部署规划 服务器IP 部署服务 192.168.*. tracker.storage.nginx 二.数据存储目录 应用 目录 fastdfs /usr/bin nginx /usr/loc ...

  2. python读取i3dm数据

    path = r'D:\data\1.i3dm'f = open(path, 'rb')f.seek(4)print('version:%d' % struct.unpack('I', f.read( ...

  3. 文件包含(File Inclusion)

    什么是文件包含? 本室旨在为您提供利用文件包含漏洞的基本知识,包括本地文件包含 (LFI).远程文件包含 (RFI) 和目录遍历.此外,我们将讨论这些漏洞被发现后的风险以及所需的补救措施 在某些情况下 ...

  4. 2020 Multi-University Training Contest 1 . Fibonacci Sum 水题改编

    题意很简单,就是让你求这个东西,这个时候你发现,原题???? https://blog.csdn.net/acdreamers/article/details/23039571 哦,只是原来写过的哪一 ...

  5. Go 语言:如何利用好 TDD 学习指针并了解 Golang 中的 error 处理

    我们在上一节中学习了结构体(structs),Go语言:利用 TDD 驱动开发测试 学习结构体.方法和接口 它可以组合与一个概念相关的一系列值. 你有时可能想用结构体来管理状态,通过将方法暴露给用户的 ...

  6. UI/UE设计学习路线图(超详细)

    很多小伙伴认为ui设计很简单,就是用相关的软件设计制作图片.界面等.其实不然,UI设计融合了很多学科内容.要从一个完全没有基础的人成长为一个ui设计者,该如何学习呢?主要分为基础阶段和专业课程阶段,其 ...

  7. swagger-ui 导出离线文档md格式

    <dependency> <groupId>io.github.swagger2markup</groupId> <artifactId>swagger ...

  8. RPC 与 Restful 的区别

    PRC 是一种技术的代名词,HTTP 是一种协议,RPC 可以通过 HTTP 来实现,也可以通过 Socket 自己实现一套协议来实现.所以谈论为什么用 RPC 不用 HTTP 是无意义的.但我们习惯 ...

  9. 爬取网页的通用代码框架.py(亲测有效)

    import requests def getHTMLText(url): try: kv = {'user-agent':'Mozilla/5.0'} r = requests.get(url,he ...

  10. 微软 New Bing AI 申请与使用保姆级教程(免魔法)

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 大家好,我是小彭. 最近的 AI 技术实在火爆,从 OpenAI 的 ChatGPT,到微软的 New Bi ...