当前位置: 首页 > article >正文

【LeetCode刷题-树】--654.最大二叉树

654.最大二叉树

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

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

image-20231119202610805

image-20231119202618085

方法:使用递归

/**
 * 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) {
        return construct(nums,0,nums.length - 1);
    }
    public TreeNode construct(int[] nums,int left,int right){
        if(left > right){
            return null;
        }
        int max_index = left;
        for(int i = left + 1;i <= right ;i++){
            if(nums[i] > nums[max_index]){
                max_index = i;
            }
        }
        TreeNode node = new TreeNode(nums[max_index]);
        node.left = construct(nums,left,max_index - 1);
        node.right = construct(nums,max_index + 1,right);
        return node;
    }
}

http://www.kler.cn/a/133844.html

相关文章:

  • < OS 有关 > 阿里云:轻量应用服务器 的使用 安装 Tailscale 后DNS 出错, 修复并替换 apt 数据源
  • MYSQL数据库基础-01.数据库的基本操作
  • 【高阶数据结构】布隆过滤器(BloomFilter)
  • StarRocks强大的实时数据分析
  • HTML<img>标签
  • 2023年江西省职业院校技能大赛网络系统管理赛项(Linux部分样题)
  • MySQL数据库索引以及使用唯一索引实现幂等性
  • 网络层——IP协议
  • 数据结构:红黑树讲解(C++)
  • Nginx负载均衡机制及常见问题
  • 16. Spring源码篇之指定构造方法参数
  • Prometheus+Grafana监控
  • 【Java并发编程七】Java内存模型
  • Django command执行脚本
  • C++初阶 日期类的实现(上)
  • 专业数据标注公司:景联文科技领航数据标注行业,满足大模型时代新需求
  • ⑩④【MySQL】什么是视图?怎么用?视图的检查选项? 视图的作用?[VIEW]
  • 【Redis】RedisTemplate最全的常用方法
  • VB.net webbrowser 自定义下载接口实现
  • 【数据结构】图的存储结构及实现(邻接表和十字链表)
  • 适用于 Windows 的 10 个最佳视频转换器:快速转换高清视频
  • C++ 字符串的 拼接,插入,查找与截取。
  • 消息消费过程
  • CnosDB有主复制演进历程
  • main.js 中的 render函数
  • 几种典型的深度学习算法:(CNN、RNN、GANS、RL)