博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 654. 最大二叉树
阅读量:4033 次
发布时间:2019-05-24

本文共 1447 字,大约阅读时间需要 4 分钟。

题目描述

给定一个不含重复元素的整数数组 nums 。一个以此数组直接递归构建的 最大二叉树 定义如下:

二叉树的根是数组 nums 中的最大元素。

左子树是通过数组中 最大值左边部分 递归构造出的最大二叉树。
右子树是通过数组中 最大值右边部分 递归构造出的最大二叉树。
返回有给定数组 nums 构建的 最大二叉树 。
示例:
在这里插入图片描述

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/maximum-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

C++

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode() : val(0), left(nullptr), right(nullptr) {} *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ /* 思路: 递归停止条件:构树数组为空 返回什么: 构造的二叉树的根节点: 本级递归干什么: 求最大值,分别构造左右子树 */class Solution {
public: TreeNode* constructMaximumBinaryTree(vector
& nums) {
if(nums.size()==0) return NULL; return buildtree(nums,0,nums.size()-1); } TreeNode* buildtree(vector
& nums,int l, int r ){
if(l>r) return NULL; int index=l; int max=nums[l]; for(int i=l+1;i<=r;i++){
if(nums[i]>=max){
index=i; max=nums[i]; } } TreeNode* root1=new TreeNode(); root1->left=buildtree(nums,l,index-1); root1->right=buildtree(nums,index+1,r); root1->val=max; return root1; }};

注意以后建立树或者链表的新节点,要这样子

TreeNode* root1=new TreeNode();
直接 TreeNode* root1;就一直出错

你可能感兴趣的文章
Android系统构架
查看>>
Android 跨应用程序访问窗口知识点总结
查看>>
各种排序算法的分析及java实现
查看>>
SSH框架总结(框架分析+环境搭建+实例源码下载)
查看>>
js弹窗插件
查看>>
自定义 select 下拉框 多选插件
查看>>
js判断数组内是否有重复值
查看>>
js获取url链接携带的参数值
查看>>
gdb 调试core dump
查看>>
gdb debug tips
查看>>
arm linux 生成火焰图
查看>>
linux和windows内存布局验证
查看>>
linux config
查看>>
linux insmod error -1 required key invalid
查看>>
linux kconfig配置
查看>>
linux不同模块completion通信
查看>>
linux printf获得时间戳
查看>>
C语言位扩展
查看>>
linux dump_backtrace
查看>>
linux irqdebug
查看>>