Skip to content

Commit 85148af

Browse files
committedMar 29, 2024
Add binary tree from preorder and inorder traversal
1 parent bd329b9 commit 85148af

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed
 
+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package java1.algorithms.tree;
2+
3+
import java.util.Arrays;
4+
5+
public class BuildTree {
6+
//TC: O(n) SC: O(n)
7+
private TreeNode buildTree(int[] preorder, int[] inorder){
8+
if(preorder.length == 0 || inorder.length == 0) {
9+
return null;
10+
}
11+
12+
TreeNode root = new TreeNode(preorder[0]);
13+
int mid = 0;
14+
for(int i=0; i<preorder.length; i++) {
15+
if(inorder[i] == preorder[0]) {
16+
mid = i;
17+
}
18+
}
19+
20+
root.left = buildTree(Arrays.copyOfRange(preorder, 1, mid+1), Arrays.copyOfRange(inorder, 0, mid));
21+
root.left = buildTree(Arrays.copyOfRange(preorder, mid+1, preorder.length), Arrays.copyOfRange(inorder, mid+1, inorder.length));
22+
23+
return root;
24+
}
25+
public static void main(String[] args) {
26+
int[] preorder = {3,9,20,15,7}, inorder = {9,3,15,20,7};
27+
BuildTree tree = new BuildTree();
28+
System.out.println(tree.buildTree(preorder, inorder));
29+
}
30+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
//TC: O(n) SC: O(n)
2+
3+
function buildTree(preorder, inorder) {
4+
if(preorder.length === 0 || inorder.length === 0) return null;
5+
6+
let root = new TreeNode(preorder[0]);
7+
let mid = inorder.indexOf(preorder[0]);
8+
9+
root.left = buildTree(preorder.slice(1, mid+1), inorder.slice(0, mid));
10+
root.right = buildTree(preorder.slice(mid+1, preorder.length), inorder.slice(mid+1, inorder.length));
11+
12+
return root;
13+
}
14+
15+
class TreeNode {
16+
constructor(value) {
17+
this.left = null;
18+
this.right = null;
19+
this.value = value;
20+
}
21+
}
22+
23+
let preorder = [3,9,20,15,7], inorder = [9,3,15,20,7];
24+
console.log(buildTree(preorder, inorder));

0 commit comments

Comments
 (0)
Please sign in to comment.