mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 19:44:45 +08:00
Update 0654.最大二叉树.md
添加 0654.最大二叉树 Java版本
This commit is contained in:
@ -224,7 +224,35 @@ root->right = traversal(nums, maxValueIndex + 1, right);
|
|||||||
|
|
||||||
|
|
||||||
Java:
|
Java:
|
||||||
|
```Java
|
||||||
|
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);
|
||||||
|
// 根据maxIndex划分左右子树
|
||||||
|
root.left = constructMaximumBinaryTree1(nums, leftIndex, maxIndex);
|
||||||
|
root.right = constructMaximumBinaryTree1(nums, maxIndex + 1, rightIndex);
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Python:
|
Python:
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user