https://leetcode.com/problems/maximum-binary-tree/description/
题解:运用递归的思想,找到最大的元素,然后构建二叉树。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode constructMaximumBinaryTree(int[] nums) {
if(nums != null)
return construct(nums, 0, nums.length-1);
return null;
}
private TreeNode construct(int[] nums, int begin, int end) {
//找到最大的元素
int max = begin;
for(int i = begin+1; i <= end; i++) {
if(nums[max] < nums[i])
max = i;
}
//创建最大元素的结点
TreeNode root = new TreeNode(nums[max]);
root.left = begin<max?construct(nums, begin, max-1):null;
root.right = end>max?construct(nums, max+1, end):null;
return root;
}
}