LeetCode 654 最大二叉树
题目链接:力扣s
思路:
递归
递归函数声明:
TreeNode* constructMaximumBinaryTree(vector<int>& nums)
递归出口:
(1)nums数组为空,返回空节点
(2)nums数组个数为1,返回用该值构造的根节点
递归体:
找到nums最大值,构造根节点
for(int i=0;i<nums.size();i++){ if(max<n){max=n;max_index=i; }}
找出nums中最大值max和最大值下标max_index
TreeNode *root=new TreeNode(max);
构造根节点
数组分为最大值左面的数组nums1,最大值右面的数组nums2
vector<int>nums1(nums.begin(),nums.begin()+max_index);vector<int>nums2(nums.begin()+max_index+1,nums.end());
递归构造左子树和右子树
TreeNode *l = constructMaximumBinaryTree (nums1);TreeNode *r= constructMaximumBinaryTree(nums2);
构造整棵树
root->left=l;root->right=r;
完整代码
class Solution {
public:TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
if(nums.size()==0)
{return NULL;
}
if(nums.size()==1)
{TreeNode *root=new TreeNode(nums[0]);return root;
}int max_index=0;
int max=-1;
for(int i=0;i<nums.size();i++)
{if(max<nums[i]){max=nums[i];max_index=i;}
}
TreeNode *root=new TreeNode;
root->val=max;
vector<int>nums1(nums.begin(),nums.begin()+max_index);
vector<int>nums2(nums.begin()+max_index+1,nums.end());
TreeNode *l=constructMaximumBinaryTree(nums1);
TreeNode *r=constructMaximumBinaryTree(nums2);
root->left=l;
root->right=r;
return root;}
};
LeetCode 654 最大二叉树相关推荐
- LeetCode 654. 最大二叉树(递归)
文章目录 1. 题目 2. 解题 1. 题目 给定一个不含重复元素的整数数组.一个以此数组构建的最大二叉树定义如下: 二叉树的根是数组中的最大元素. 左子树是通过数组中最大值左边部分构造出的最大二叉树 ...
- leetcode —— 654. 最大二叉树
给定一个不含重复元素的整数数组.一个以此数组构建的最大二叉树定义如下: 二叉树的根是数组中的最大元素. 左子树是通过数组中最大值左边部分构造出的最大二叉树. 右子树是通过数组中最大值右边部分构造出的最 ...
- 自我总结:Leetcode 654, 105, 106, 889
终于算是熬过期末以后想起来了学学习了哈哈哈哈. 今天看看二叉树的构造,以下内容为自我学习总结,主要目的为学习笔记,兼职传播小想法.内容为学习labuladong的学习笔记.以下为链接,感谢大佬的学习讲 ...
- LeetCode实战:二叉树的最近公共祖先
背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given a bin ...
- LeetCode实战:二叉树中的最大路径和
背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given a non ...
- leetcode 617. 合并二叉树 思考分析
题目 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠. 你需要将他们合并为一个新的二叉树.合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否 ...
- 【Leetcode | 02】二叉树、线性表目录
二叉树 序号 题号 1 94. 二叉树的中序遍历 2 95. 不同的二叉搜索树 II 3 96. 不同的二叉搜索树 4 98. 验证二叉搜索树 5 100. 相同的树 6 101. 对称二叉树 7 1 ...
- LeetCode Python实现 二叉树简单部分
LeetCode Python实现 二叉树简单部分 ''' 1 二叉树的最大深度 给定一个二叉树,找出其最大深度.二叉树的深度为根节点到最远叶子节点的最长路径上的节点数.说明: 叶子节点是指没有子节点 ...
- 二叉树层次遍历c语言_每日一道 LeetCode (23):二叉树的层次遍历 II
❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...
最新文章
- 输出控制台信息到日志 并 通过cronolog对tomcat进行日志切分
- 用matlab实现假设性检验T检验(葡萄酒评价)
- javascript Date
- 计算机学科技术前沿:云计算主要平台及特性
- html网页代码入门,html 网页入门(示例代码)
- 鸡啄米VS2010/MFC编程入门教程系列
- 遥感原理与应用读书笔记(遥感平台、遥感传感器)
- spark算子--action篇
- killer杀手网卡linux,板载四块Killer网卡,微星Z370 GODLIKE GAMING主板实物图赏
- python绘制三维动态柱状图-使用pyecharts模块
- 每日新闻:国美与车势达成独家战略合作;腾讯Tsrc年度峰会破界召开;日本将允许高度自动驾驶车上路;“开源芯片”是芯片发展的新潮流...
- java notifier_Java Notifier類代碼示例
- 到底是人玩了游戏,还是游戏玩了人?----随笔心情
- 电子防盗标签 之二:声磁软标签 《转》
- 【67】PCIe Power Management和linux对PME的处理
- Latex 如何给数学公式进行编号
- gpio操作实现人体感应灯(一)
- 分享:如何使DFC实现跨平台
- Mac干货 如何快速的在Mac上安装Windows双系统?虚拟机Parallels Desktop +Bootcamp安装
- python字典的分行实现,字符串操作,购物车代码实现
热门文章
- [转]浅谈php web安全
- CSS兼容IE6,IE7,FF的技巧
- 使用java程序读取配置文件中的相关属性值-asp.net关注
- UVA11876 N + NOD (N)【欧拉筛法+前缀和】
- POJ3617 Best Cow Line【水题】
- web 基本概念辨异 —— URI 与 URL
- Python Tricks(二十一)—— 排列组合的计算
- 分治法(divide conquer)与动态规划(dynamic programming)应用举例
- 解析几何 —— 椭圆
- crontab——Linux 下的定时任务