【leetcode】每日精选题详解之654. 最大二叉树

   日期:2020-10-13     浏览:108    评论:0    
核心提示:        嗨,大家好,我是袁厨(因为酷爱做饭,所以自己考取了厨师证)。之前一直看大家写的博客,学到了很多东西。然后最近萌生了自己写的想法,将自己知道的分享给需要的同学。以后每天会为大家分享leetcode精选题目的各种题解和Python, JS, JQ, CSS, PHP, JAVA的一些小Demo。请大家关注我,一起交流学习吧。 654. 最大二叉树题目描述递归解法做题思路题目代码总结题目描述 ..

        嗨,大家好,我是袁厨(因为酷爱做饭,所以自己考取了厨师证)。之前一直看大家写的博客,学到了很多东西。然后最近萌生了自己写的想法,将自己知道的分享给需要的同学。以后每天会为大家分享leetcode精选题目的各种题解和Python, JS, JQ, CSS, PHP, JAVA的一些小Demo。请大家关注我,一起交流学习吧。

654. 最大二叉树

  • 题目描述
  • 递归解法
    • 做题思路
    • 题目代码
  • 总结

题目描述

递归解法

做题思路

这个题目不算太难,主要是不断求出最大值做为根节点。我们可以通过一下几步进行构造二叉树

(1)如果数组大小为零,说明是空数组
(2)如果不为空,则取数组中最大的数为根节点,并记录下该节点的索引。
(3)以该节点为切割点进行切割,分成左数组和右数组
(4)递归处理左数组和右数组

题目代码

class Solution { 
    public TreeNode constructMaximumBinaryTree(int[] nums) { 
              if(nums.length==0){ 
                  return null;
              }
              return constructMaximumBinaryTreeFun(nums);

    }
    public TreeNode constructMaximumBinaryTreeFun(int[] nums){ 
              if(nums.length==0){ 
                  return null;
              }
              int max = 0;
              int maxindex = 0; 
              //求出最大值,并记录出最大值下标
              for(int i = 0; i< nums.length;i++){ 
                  if(nums[i]>max){ 
                      max = nums[i];
                      maxindex = i;
                  }
              }
              //将最大值设为根节点
              TreeNode root = new TreeNode(max);
              //定义左区间和右区间,大小需要注意一下。
              int[] left = new int[maxindex];
              int[] right = new int[nums.length-maxindex-1];
              //copy原数组的值,为递归做准备
              System.arraycopy(nums,0,left,0,maxindex);
              System.arraycopy(nums,maxindex+1,right,0,nums.length-maxindex-1);
              //递归实现
              root.left=constructMaximumBinaryTreeFun(left);
              root.right=constructMaximumBinaryTreeFun(right);
              return root;
    }
}

总结

同学们我最近有了一个长久的计划,就是把leetcode题目整理出来,由浅入深,由简到繁都整理出来是一个宏大的工程,所以我打算每天整理一到两个经典题目,完成这一个流程我相信肯定会收获巨大的。如果想一起刷题的哥们,我们可以一起在群里打卡,共同进步。


作者:LeetCode
链接:https://leetcode-cn.com/problems/rotate-array/solution/xuan-zhuan-shu-zu-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服