zoukankan      html  css  js  c++  java
  • [Leetcode]654.Maximum Binary Tree

    链接:LeetCode654

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

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

    相关标签:递归

    对于构造二叉树相关的题目,先考虑递归算法。这里,我们要将最大元素作为根,并将在左边,右边部分的数组分别进行递归即可。
    代码如下:

    python:

    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    
    class Solution:
        def constructMaximumBinaryTree(self, nums: List[int]) -> TreeNode:
            if not nums:
                return
            mx = max(nums)
            mx_ind = nums.index(mx)
            root = TreeNode(mx)
            root.left,root.right = self.constructMaximumBinaryTree(nums[:mx_ind]),self.constructMaximumBinaryTree(nums[mx_ind+1:])
            return root
    

    C++:

    class Solution {
    public:
        TreeNode* fun(vector<int> &nums,int l,int r,int n)
        {
            if(l>r || l<0 || r>=n)
                return NULL;
            int index=l;
            int maxi=INT_MIN;
            for(int i=l;i<=r;i++)
            {
                if(maxi<nums[i])
                {
                    maxi=nums[i];
                    index=i;
                }
            }
            TreeNode *root=new TreeNode(nums[index]);
            root->left=fun(nums,l,index-1,n);
            root->right=fun(nums,index+1,r,n);
            return root;
        }
        TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
            if(nums.size()==0)
                return NULL;
            return fun(nums,0,nums.size()-1,nums.size());
        }
    };
    
  • 相关阅读:
    PHP 实现无限极栏目分类
    CI 中css样式或者js样式加载不进来的情况
    php 写model层
    Struts1 中$ 没有解析的问题
    App设计相关网站
    如何知道 win10 的激活到期时间和期限等
    dev XtraMessageBox按钮显示中文
    静电的ui教程
    从零开始做UI-静电的sketch设计教室 视频教程
    SQL Server2005作业执行失败的解决办法
  • 原文地址:https://www.cnblogs.com/hellojamest/p/12243162.html
Copyright © 2011-2022 走看看