题目:
给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:
二叉树的根是数组中的最大元素。
左子树是通过数组中最大值左边部分构造出的最大二叉树。
右子树是通过数组中最大值右边部分构造出的最大二叉树。
通过给定的数组构建最大二叉树,并且输出这个树的根节点。

Example 1:
输入: [3,2,1,6,0,5]
输入: 返回下面这棵树的根节点:

注意:
给定的数组的大小在 [1, 1000] 之间。

解析:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}time complexity : O(n)1.新建一个stk vector类型栈2.生成node3.stk为空或当前节点node小于stk顶层节点,则stk顶层节点的右子树设为当前node,并将node插入stk中4.若不满足,依次pop stk中元素 ,直到满足条件,并将当前节点的右子树设为最后一个pop的节点注意:stk是严格按照将降序排列的* };*/
class Solution {
public:TreeNode* constructMaximumBinaryTree(vector<int>& nums) {vector<TreeNode *> stk;//按降序排列   栈底元素最大for(const auto num : nums){TreeNode*  node = new TreeNode(num);while(!stk.empty() && stk.back()->val < num){  //stk中最大值小于当前节点node->left = stk.back();    stk.pop_back();}if(!stk.empty()){stk.back()->right = node;}stk.push_back(node);}return stk[0];   //stk是按照降序排列的,栈顶元素就最大值}
};

转载于:https://www.cnblogs.com/fightingcode/p/11029072.html

leetcode-654-最大二叉树相关推荐

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

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

  2. leetcode —— 654. 最大二叉树

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

  3. LeetCode 654 最大二叉树

    题目链接:力扣s 思路: 递归 递归函数声明: TreeNode*  constructMaximumBinaryTree(vector<int>& nums) 递归出口:  (1 ...

  4. 自我总结:Leetcode 654, 105, 106, 889

    终于算是熬过期末以后想起来了学学习了哈哈哈哈. 今天看看二叉树的构造,以下内容为自我学习总结,主要目的为学习笔记,兼职传播小想法.内容为学习labuladong的学习笔记.以下为链接,感谢大佬的学习讲 ...

  5. LeetCode实战:二叉树的最近公共祖先

    背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given a bin ...

  6. LeetCode实战:二叉树中的最大路径和

    背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given a non ...

  7. leetcode 617. 合并二叉树 思考分析

    题目 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠. 你需要将他们合并为一个新的二叉树.合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否 ...

  8. 【Leetcode | 02】二叉树、线性表目录

    二叉树 序号 题号 1 94. 二叉树的中序遍历 2 95. 不同的二叉搜索树 II 3 96. 不同的二叉搜索树 4 98. 验证二叉搜索树 5 100. 相同的树 6 101. 对称二叉树 7 1 ...

  9. LeetCode Python实现 二叉树简单部分

    LeetCode Python实现 二叉树简单部分 ''' 1 二叉树的最大深度 给定一个二叉树,找出其最大深度.二叉树的深度为根节点到最远叶子节点的最长路径上的节点数.说明: 叶子节点是指没有子节点 ...

  10. 二叉树层次遍历c语言_每日一道 LeetCode (23):二叉树的层次遍历 II

    ❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...

最新文章

  1. javascript worker 多线程 简单示例
  2. MySQL_项目7: 各部门工资最高的员工(难度:中等)
  3. NFS网络文件系统服务
  4. python判断点在直线的哪一侧_判断点在直线的哪一侧
  5. Boost.MultiIndex 使用散列索引的示例
  6. MySQL性能基准测试对比:MySQL 5.7与MySQL 8.0
  7. 阿里云OSS增量上传脚本
  8. azm335x 串口配置
  9. Win32程序和控制台应用程序的项目互转设置
  10. vant ui的dialog二次封装使用
  11. 模仿淘宝网的主页,实现了一些简单的功能
  12. 如何申请注册Tom企业邮箱,教程详解来袭
  13. ODI报错/警告/调度异常流程信息
  14. 操作系统P/V操作(V操作中的典型理解偏差)
  15. 爱奇艺千亿级数据查询服务实践
  16. win10 64位系统 打开光盘出现339错误 缺少mscomctl.ocx组件 解决方案
  17. Python3网络爬虫(十二):初识Scrapy之再续火影情缘
  18. 西门子机床系统各时间数据查看
  19. 电脑有线无线同时上网
  20. 视频无信号--H.265与H.264解码器连接录像机拼接电视显示画面处理

热门文章

  1. 八月面试题(2) 2018-9-6
  2. 基本图形的扫描转换(绘图函数的自定义实现)和反采样。
  3. Citrix_XenServer-6.1安装过程详解(转)
  4. ArcEngine中画点画线画面
  5. 【转】#ifndef作用
  6. 第九课:循环链表与双向链表
  7. what to improve on my case study?
  8. t test formula
  9. how can we make them work together efficiently?
  10. validity和satisfiable的奇妙联系