Hallo Leute.
Ich studiere angewandte Informatik im zweiten Semester und hatte davor noch nichts damit am Hut, deshalb bitte die Antworten lieber etwas zu einfach formulieren.
Wie schon gesagt muss ich ein Programm schreiben um einen Binärbaum zu rekonstruieren. Mein Hauptproblem ist hierbei eine ArrayIndexOutOfBoundsexception weil anscheinend meine statische Variable index zu stark anwächst. Ich weiß klingt viel zu banal um eine Frage zu posten aber ich finde den Fehler leider nicht mehr alleine. Würde mich sowohl über einen kleinen Schubs in die richtige Richtung als auch über den Tipp komplett neu anzufangen freuen. Bei letzterem bitte aber auch noch anmerken auf was ich dann achten soll.
Hier ist mein Code:
LG, Lukas
Ich studiere angewandte Informatik im zweiten Semester und hatte davor noch nichts damit am Hut, deshalb bitte die Antworten lieber etwas zu einfach formulieren.
Wie schon gesagt muss ich ein Programm schreiben um einen Binärbaum zu rekonstruieren. Mein Hauptproblem ist hierbei eine ArrayIndexOutOfBoundsexception weil anscheinend meine statische Variable index zu stark anwächst. Ich weiß klingt viel zu banal um eine Frage zu posten aber ich finde den Fehler leider nicht mehr alleine. Würde mich sowohl über einen kleinen Schubs in die richtige Richtung als auch über den Tipp komplett neu anzufangen freuen. Bei letzterem bitte aber auch noch anmerken auf was ich dann achten soll.
Hier ist mein Code:
Java:
public static int index=0;
public Tree reconstructTree(int[] inorder, int[] preorder) {
Tree tree=new Tree();
Node n=new Node();
n.key=preorder[index];
tree.size= inorder.length; //initializing Tree, define Root
int pos=0;
for(;inorder[pos]==preorder[index];pos++); //position of the Root in the inorder Array
n.left=reconstruct(inorder,preorder,0,pos);
n.right=reconstruct(inorder,preorder,pos,inorder.length); //finding the childnodes of Root
return tree;
}
public Node reconstruct(int[] inorder,int[] preorder,int start,int stop){
index++;
if(stop-start==0) return null; //return nothing if there is nothing left in my defined area
Node n=new Node();
n.key=preorder[index];
if(stop-start==1) return n; //return the child node if it is the last in the defined area (leaf)
int pos=0;
for(;inorder[pos]==preorder[index];pos++);
n.left=reconstruct(inorder,preorder,start,pos);
n.right=reconstruct(inorder,preorder,pos,stop); //find trhe child nodes
return n;
}
LG, Lukas