Skip to content

Commit 7005d10

Browse files
committed
SS22
1 parent 62f23b9 commit 7005d10

File tree

2 files changed

+54
-6
lines changed

2 files changed

+54
-6
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@
1212
/quickSort/target/
1313
/bTree/target/
1414
/bSearchTree/target/
15+
/preInReconstruct/target/

preInReconstruct/src/main/java/com/mycompany/preinreconstruct/PreInReconstruct.java

Lines changed: 53 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
* @author asadp
1313
*/
1414
public class PreInReconstruct {
15+
static ArrayList<Node> treeNodes = new ArrayList<Node>();
1516
class Node {
1617
int item;
1718
Node left,right;
@@ -21,34 +22,80 @@ public Node(int key) {
2122
left = right = null;
2223
}
2324
}
24-
ArrayList<Node> nodes = new ArrayList<Node>();
25+
Node treeNodeForItem(int key){
26+
for(Node node : treeNodes){
27+
if(node.item == key){
28+
return node;
29+
}
30+
}
31+
Node node = new Node(key);
32+
treeNodes.add(node);
33+
return node;
34+
}
35+
2536
void preInReconstruct(int preOrder[], int inOrder[]){
26-
Node root = new Node(preOrder[0]);
37+
if(preOrder.length == 0 || inOrder.length == 0){
38+
return;
39+
}
40+
Node root = treeNodeForItem(preOrder[0]);
2741
int index = 0;
2842
for(int i = 0; i < inOrder.length; i++){
2943
if(inOrder[i] == root.item){
3044
index = i;
3145
break;
3246
}
3347
}
48+
System.out.println("index: " + index);
3449
int inOrderLeft[] = new int[index];
3550
int inOrderRight[] = new int[inOrder.length - index -1];
3651
for(int i = 0; i < index; i++){
3752
inOrderLeft[i] = inOrder[i];
53+
System.out.print(inOrderLeft[i] + " ");
3854
}
55+
System.out.println("");
3956
for(int i = 0; i < inOrder.length - index -1; i++){
40-
inOrderRight[i] = inOrder[i + index];
57+
inOrderRight[i] = inOrder[i + index + 1];
58+
System.out.print(inOrderRight[i] + " ");
4159
}
60+
System.out.println("");
4261
int preOrderLeft[] = new int[index];
4362
int preOrderRight[] = new int[inOrder.length - index -1];
4463
for(int i = 0; i < index; i++){
4564
preOrderLeft[i] = preOrder[i + 1];
65+
System.out.print(preOrderLeft[i] + " ");
4666
}
67+
System.out.println("");
4768
for(int i = 0; i < inOrder.length - index -1; i++){
48-
preOrderRight[i] = inOrder[i + index + 1];
69+
preOrderRight[i] = preOrder[i + index + 1];
70+
System.out.print(preOrderRight[i] + " ");
4971
}
72+
System.out.println("");
73+
if(preOrderLeft.length > 0){
74+
Node left = treeNodeForItem(preOrderLeft[0]);
75+
root.left = left;
76+
System.out.println("left: " + left.item);
77+
}
78+
if(preOrderRight.length > 0){
79+
Node right = treeNodeForItem(preOrderRight[0]);
80+
root.right = right;
81+
System.out.println("right: " + right.item);
82+
}
5083

51-
root.left = preOrderLeft[0];
52-
84+
preInReconstruct(preOrderLeft, inOrderLeft);
85+
preInReconstruct(preOrderRight, inOrderRight);
86+
}
87+
void printTreeNodes(){
88+
for(Node node: treeNodes){
89+
System.out.println("Node item: " + node.item
90+
+ " left: " + (node.left == null? "null": node.left.item)
91+
+ " right: " + (node.right == null? "null": node.right.item));
92+
}
93+
}
94+
public static void main(String[] args) {
95+
PreInReconstruct pIR = new PreInReconstruct();
96+
int preOrder[] = {-1};
97+
int inOrder[] = {-1};
98+
pIR.preInReconstruct(preOrder, inOrder);
99+
pIR.printTreeNodes();
53100
}
54101
}

0 commit comments

Comments
 (0)