mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
@ -224,27 +224,32 @@ root->right = traversal(nums, maxValueIndex + 1, right);
|
||||
|
||||
|
||||
Java:
|
||||
```java
|
||||
|
||||
```Java
|
||||
class Solution {
|
||||
public TreeNode constructMaximumBinaryTree(int[] nums) {
|
||||
if (nums.length == 0) return null;
|
||||
return constructMaximumBinaryTree(nums,0,nums.length);
|
||||
return constructMaximumBinaryTree1(nums, 0, nums.length);
|
||||
}
|
||||
|
||||
private TreeNode constructMaximumBinaryTree(int[] nums, int begin, int end) {
|
||||
if (begin == end) return null;
|
||||
|
||||
int rootValue = nums[begin];
|
||||
int index = begin;
|
||||
for (int i = begin; i < end ; i++) {
|
||||
if (nums[i] > rootValue) {
|
||||
rootValue = nums[i];
|
||||
index = i;
|
||||
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(rootValue);
|
||||
root.left = constructMaximumBinaryTree(nums, begin,index);
|
||||
root.right = constructMaximumBinaryTree(nums,index+1,end);
|
||||
TreeNode root = new TreeNode(maxVal);
|
||||
// 根据maxIndex划分左右子树
|
||||
root.left = constructMaximumBinaryTree1(nums, leftIndex, maxIndex);
|
||||
root.right = constructMaximumBinaryTree1(nums, maxIndex + 1, rightIndex);
|
||||
return root;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user