654. Maximum Binary Tree(JAVA)
2017-11-21 19:45
190 查看
原題
Given an integer array with no duplicates. A maximum tree building on this array is defined as follow:
The root is the maximum number in the array.
The left subtree is the maximum tree constructed from left part subarray divided by the maximum number.
The right subtree is the maximum tree constructed from right part subarray divided by the maximum number.
Construct the maximum tree by the given array and output the root node of this tree.
Example 1:
Note:
The size of the given array will be in the range [1,1000].
解題思路
找出數組中最大的一個數,建立TreeNode,然後分別把最大的數的左邊的數字進行递歸,結果為TreeNode的左節點,右邊的數字的結果為右節點,即可。
代碼
import java.util.*;
class Solution {
public TreeNode constructMaximumBinaryTree(int[] nums) {
Vector<Integer> num = new Vector<Integer>();
for (int i = 0; i < nums.length; i++) {
num.add(nums[i]);
}
return loop(num);
}
TreeNode loop(Vector<Integer> nums) {
if (nums.size() == 0) {
return null;
}
int max = 0;
for (int i = 0; i < nums.size(); i++) {
if (nums.get(max) < nums.get(i)) {
max = i;
}
}
TreeNode root = new TreeNode(nums.get(max));
Vector<Integer> left = new Vector<Integer>(), right = new Vector<Integer>();
for (int i = 0; i < max; i++) {
left.add(nums.get(i));
}
for (int i = max+1; i < nums.size(); i++) {
right.add(nums.get(i));
}
root.left = loop(left);
root.right = loop(right);
return root;
}
}
感想
Medium後面的題太難了,我都不會做了,還是做做前面簡單的吧QAQ
Given an integer array with no duplicates. A maximum tree building on this array is defined as follow:
The root is the maximum number in the array.
The left subtree is the maximum tree constructed from left part subarray divided by the maximum number.
The right subtree is the maximum tree constructed from right part subarray divided by the maximum number.
Construct the maximum tree by the given array and output the root node of this tree.
Example 1:
Input: [3,2,1,6,0,5] Output: return the tree root node representing the following tree: 6 / \ 3 5 \ / 2 0 \ 1
Note:
The size of the given array will be in the range [1,1000].
解題思路
找出數組中最大的一個數,建立TreeNode,然後分別把最大的數的左邊的數字進行递歸,結果為TreeNode的左節點,右邊的數字的結果為右節點,即可。
代碼
import java.util.*;
class Solution {
public TreeNode constructMaximumBinaryTree(int[] nums) {
Vector<Integer> num = new Vector<Integer>();
for (int i = 0; i < nums.length; i++) {
num.add(nums[i]);
}
return loop(num);
}
TreeNode loop(Vector<Integer> nums) {
if (nums.size() == 0) {
return null;
}
int max = 0;
for (int i = 0; i < nums.size(); i++) {
if (nums.get(max) < nums.get(i)) {
max = i;
}
}
TreeNode root = new TreeNode(nums.get(max));
Vector<Integer> left = new Vector<Integer>(), right = new Vector<Integer>();
for (int i = 0; i < max; i++) {
left.add(nums.get(i));
}
for (int i = max+1; i < nums.size(); i++) {
right.add(nums.get(i));
}
root.left = loop(left);
root.right = loop(right);
return root;
}
}
感想
Medium後面的題太難了,我都不會做了,還是做做前面簡單的吧QAQ
相关文章推荐
- 654. Maximum Binary Tree
- 654. Maximum Binary Tree
- 二叉树 (Binary Tree) 的基本操作 (Java)
- Java实现简单数据结构之二叉树结构排序 binary tree
- LeetCode之Invert Binary Tree(Java版)
- leetcode 654. Maximum Binary Tree
- Leetcode 654. Maximum Binary Tree 最大二叉树 解题报告
- 654. Maximum Binary Tree
- 654. Maximum Binary Tree
- [Java多线程 三]---JMM内存模型
- Java中的枚举
- Java中的应用-AWT事件适配器
- java 中的三种引用,强引用,软引用,弱引用
- JAVA数据结构与算法-第二章-数组
- java对日期时间的处理
- java学习笔记---数据类型、运算符和控制语句
- Java日期时间及其格式化
- JAVA操作XML的完整例子——W3C DOM篇
- Java I/O经典代码实例
- Tomcat启动时出现IOException while loading persisted sessions: java.io.EOFException异常