654. 最大二叉树

题目

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

二叉树的根是数组中的最大元素。
左子树是通过数组中最大值左边部分构造出的最大二叉树。
右子树是通过数组中最大值右边部分构造出的最大二叉树。
通过给定的数组构建最大二叉树,并且输出这个树的根节点。

测试

image.png

步骤

code

image.png

执行用时 : 176 ms, 在Maximum Binary Tree的C++提交中击败了0.99% 的用户
内存消耗 : 29.2 MB, 在Maximum Binary Tree的C++提交中击败了0.00% 的用户

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
        return constructMaximumBinaryTree(nums,0,nums.size()-1);
    }
    
    TreeNode* constructMaximumBinaryTree(vector<int>& nums,int begin,int end) {
        //01 
        if(begin>end){
            return NULL;
        }
        //02 max
        int max=begin;
        for(int i=begin;i<=end;i++){
            if (nums[i]>nums[max]){
                max=i;
            }
        }
        //03
        TreeNode* root=new TreeNode(nums[max]);
        root->left=constructMaximumBinaryTree(nums,begin,max-1);
        root->right=constructMaximumBinaryTree(nums,max+1,end);
        return root;
    } 
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目描述: 分析: https://www.youtube.com/watch?v=oHnT9zTsXTg&t=7...
    小王同学加油阅读 4,410评论 0 0
  • 本文首发于我的个人博客:尾尾部落 0. 几个概念 完全二叉树:若二叉树的高度是h,除第h层之外,其他(1h-1)层...
    繁著阅读 8,350评论 3 49
  • 树的定义与基本术语   树型结构是一类重要的非线性数据结构,其中以树和二叉树最为常用,是以分支关系定义的层次结构。...
    java技术分享师阅读 4,822评论 0 1
  • 【七】 这一声很轻,又很缱绻,跟以前的所有都不一样。 【八】 走出这一个抄手游廊,走出这一片汉白玉石铺就的小路,她...
    摄影师柳丁阅读 1,310评论 0 0
  • 安装 安装好后的package.json文件 gulpfile.js 引入browser-sync
    moly琴阅读 891评论 0 0

友情链接更多精彩内容