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

【代码随想录day 17】 力扣 654.最大二叉树

视频讲解:https://www.bilibili.com/video/BV1MG411G7ox/?vd_source=a935eaede74a204ec74fd041b917810c
文档讲解:https://programmercarl.com/0654.%E6%9C%80%E5%A4%A7%E4%BA%8C%E5%8F%89%E6%A0%91.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE
力扣题目:https://leetcode.cn/problems/maximum-binary-tree/

这道题主要是要搞清楚最大二叉树的定义:

  • 二叉树的根是数组中的最大元素。
  • 左子树是通过数组中最大值左边部分构造出的最大二叉树。
  • 右子树是通过数组中最大值右边部分构造出的最大二叉树。

因此步骤如下所示:

  1. 找出最大值确定为根节点,并赋值
  2. 分为左数组和右数组
  3. 左数组找最大值,再分
  4. 右数组找最大值,再分
  5. 如果没有左右数组直接跳过
  6. 直到数组长度为1,即遍历到了叶子节点,返回数组
class Solution {
public:TreeNode* constructMaximumBinaryTree(vector<int>& nums) {//终止条件,如果nums的长度只剩1就说明到叶子节点了TreeNode *node = new TreeNode(0);if(nums.size()==1){node->val=nums[0];return node;}//找根节点,就是数组的最大值int maxValue=0;int index=0;for(int i=0;i<nums.size();i++){if(nums[i]>maxValue){maxValue=nums[i];index=i;}}node->val=maxValue;//分割左右数组//如果左边有数据就说明有左子树if(index>0){vector<int > newVec(nums.begin(),nums.begin()+index);node->left = constructMaximumBinaryTree(newVec);}//如果右边有数据说明有右子树if(index<(nums.size()-1)){vector<int> newVec(nums.begin()+index+1, nums.end());node->right=constructMaximumBinaryTree(newVec);}return node;}
};
http://www.lryc.cn/news/617979.html

相关文章:

  • LeetCode151~188题解
  • Apache RocketMQ:消息可靠性、顺序性与幂等处理的全面实践
  • Docker 详解(保姆级安装+配置+使用教程)
  • MySQL高可用改造之数据库开发规范(大事务与数据一致性篇)
  • C++方向知识汇总(三)
  • Git 常用命令总结
  • 泰国文字识别技术:从精准识别字符向深度理解语义的方向不断进化
  • 日本VPS内存溢出了如何优化
  • 数据变而界面僵:Vue/React/Angular渲染失效解析与修复指南
  • 稠密检索:基于神经嵌入的高效语义搜索范式
  • 【LeetCode 热题 100】(七)链表
  • 数据结构——树(02构造二叉树,代码练习)
  • 【网络基础】深入理解 TCP/IP 协议体系
  • 无人机航拍数据集|第11期 无人机人员行为目标检测YOLO数据集1868张yolov11/yolov8/yolov5可训练
  • libwebsockets 服务端获取过代理的真实连接IP
  • [4.2-1] NCCL新版本的register如何实现的?
  • AI(领域)应用落地技术决策指南:从双路径架构到系统性实施
  • Oracle 23AI 稳定执行计划:SQL Profile
  • 训练苹果风格Emoji生成模型的技术方案
  • Docker-09.Docker基础-Dockerfile语法
  • 数据上云有什么好处?企业数据如何上云?
  • Flutter Provider 状态管理全面解析与实战应用:从入门到精通
  • priority_queue(优先级队列)和仿函数
  • 关于linux系统编程2——IO编程
  • 内网依赖管理新思路:Nexus与CPolar的协同实践
  • redis常见的性能问题
  • Redis 数据倾斜
  • day072-代码检查工具-Sonar与maven私服-Nexus
  • Qt 5.14.2安装教程
  • 基于Qt Property Browser的通用属性系统:Any类与向量/颜色属性的完美结合