Skip to content

Commit fb13702

Browse files
solves #105 in java
1 parent b1863cf commit fb13702

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

Diff for: README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@
9797
| 102 | [Binary Tree Level Order Traversal](https://leetcode.com/problems/binary-tree-level-order-traversal) | [![Java](assets/java.png)](src/BinaryTreeLevelOrderTraversal.java) | |
9898
| 103 | [Binary Tree Zigzag Level Order Traversal](https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal) | [![Java](assets/java.png)](src/BinaryTreeZigzagLevelOrderTraversal.java) | |
9999
| 104 | [Maximum Depth of Binary Tree](https://leetcode.com/problems/maximum-depth-of-binary-tree) | [![Java](assets/java.png)](src/MaximumDepthOfBinaryTree.java) [![Python](assets/python.png)](python/maximum_depth_of_binary_tree.py) | |
100-
| 105 | [Construct Binary Tree from Preorder and Inorder Traversal](https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal) | | |
100+
| 105 | [Construct Binary Tree from Preorder and Inorder Traversal](https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal) | [![Java](assets/java.png)](src/ConstructBinaryTreeFromPreorderAndInorderTraversal.java) | |
101101
| 106 | [Construct Binary Tree from Inorder and Postorder Traversal](https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal) | | |
102102
| 107 | [Binary Tree Level Order Traversal II](https://leetcode.com/problems/binary-tree-level-order-traversal-ii) | [![Java](assets/java.png)](src/BinaryTreeLevelOrderTraversalII.java) [![Python](assets/python.png)](python/binary_tree_level_order_traversal_ii.py) | |
103103
| 108 | [Convert Sorted Array To Binary Search Tree](https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree) | [![Java](assets/java.png)](src/ConvertSortedArrayToBinarySearchTree.java) [![Python](assets/python.png)](python/converted_sorted_array_to_binary_search_tree.py) | |
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal
2+
// T: O(n)
3+
// S: O(n)
4+
5+
import java.util.HashMap;
6+
import java.util.Map;
7+
8+
public class ConstructBinaryTreeFromPreorderAndInorderTraversal {
9+
int preOrderIndex = 0;
10+
Map<Integer, Integer> inOrderIndices;
11+
12+
public TreeNode buildTree(int[] preorder, int[] inorder) {
13+
inOrderIndices = buildValueToIndexMap(inorder);
14+
return buildTree(preorder, inorder, 0, preorder.length);
15+
}
16+
17+
private TreeNode buildTree(int[] preOrder, int[] inOrder, int start, int end) {
18+
if (start >= end) return null;
19+
20+
int inOrderIndex = inOrderIndices.get(preOrder[preOrderIndex]);
21+
final TreeNode root = new TreeNode(preOrder[preOrderIndex++]);
22+
root.left = buildTree(preOrder, inOrder, start, inOrderIndex);
23+
root.right = buildTree(preOrder, inOrder, inOrderIndex + 1, end);
24+
return root;
25+
}
26+
27+
private Map<Integer, Integer> buildValueToIndexMap(int[] array) {
28+
final Map<Integer, Integer> result = new HashMap<>();
29+
for (int index = 0 ; index < array.length ; index++) {
30+
result.put(array[index], index);
31+
}
32+
return result;
33+
}
34+
}

0 commit comments

Comments
 (0)