这篇page是针对leetcode上的654.最大二叉树所写的。小尼先简单的说明一下这道题的意思给定一个不重复的数组nums,创造一个根节点,nums中的最大值为根节点,递归最大值左边创建左子树,递归右边创建右子树。小尼这边给出递归的写法:
class Solution { public TreeNode constructMaximumBinaryTree(int[] nums) { return constructMaximumBinaryTree1(nums,0,nums.length); } public TreeNode constructMaximumBinaryTree1(int[] nums,int leftindex, int rightindex){ if(rightindex - leftindex < 1){ return null; } if(rightindex - leftindex == 1){ return new TreeNode(nums[leftindex]); } int maxIndex = leftindex; int maxVal = nums[maxIndex]; for(int i = leftindex + 1;i<rightindex;i++){ if(nums[i]>maxVal){ maxVal = nums[i]; maxIndex = i; } } TreeNode root = new TreeNode(maxVal); root.left = constructMaximumBinaryTree1(nums,leftindex,maxIndex); root.right = constructMaximumBinaryTree1(nums,maxIndex + 1,rightindex); return root; } }
供小伙伴参考