当前位置: 首页 > 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

相关文章:

  • C++中的栈(Stack)和堆(Heap)
  • MySQL数据库:SQL语言入门 【下】(学习笔记)
  • CentOS 服务
  • 随手记:简单实现纯前端文件导出(XLSX)
  • 边缘计算在智能交通系统中的应用
  • Spring框架之观察者模式 (Observer Pattern)
  • 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)