hallo,
ich will die methoden pre-post-inorder rekursiv auf ein array anwenden.
dabei ist der name des arrays knoten und die wurzel root stets 0 vor dem methodenaufruf.
ich habe die alogrithmen als text vor mir doch ich kann sie nicht praktizieren-.-
als beispiel für inorder:
1. wurzelknoten=0
2. falls aktueller knoten==null(>array.length) : rekursion beenden
3. linkes kind als aktuellen knoten wählen und zu schritt2
4. aktion ausführen, also knoten ausgeben
5. rechtes kind als aktuellen knoten wählen und zu schritt2
hier die implementationen
und hier ist die testklasse:
ich weiß, dass die aufgabe für die meisten in dem forum trivial ist und sie die lösung sofort sehen...
ich habe ca 4 stunden nachgedacht und rumprobiert doch iwie will keine methode klappen...
würde mich sehr auf tipps freuen
mfg
ich will die methoden pre-post-inorder rekursiv auf ein array anwenden.
dabei ist der name des arrays knoten und die wurzel root stets 0 vor dem methodenaufruf.
ich habe die alogrithmen als text vor mir doch ich kann sie nicht praktizieren-.-
als beispiel für inorder:
1. wurzelknoten=0
2. falls aktueller knoten==null(>array.length) : rekursion beenden
3. linkes kind als aktuellen knoten wählen und zu schritt2
4. aktion ausführen, also knoten ausgeben
5. rechtes kind als aktuellen knoten wählen und zu schritt2
hier die implementationen
Java:
public class Baum{
private int root=0;
char[]knoten;
public Baum(char[]values){
knoten=values;
}
private int getLeftChild (int i){
return 2*i+1;}
private int getRightChild (int i){
return 2*i+2;
}
void printInorder(){
if(root < knoten.length){
while (getLeftChild(root)<knoten.length) {root=getLeftChild(root);
printInorder();}
System.out.println(knoten[root]);
while (getRightChild(root)<knoten.length){root=getRightChild(root);
printInorder();
}
}}
void printPreorder(){
if(root < knoten.length){
System.out.println(knoten[root]);
if(getLeftChild(root)<knoten.length) {root=getLeftChild(root);
printInorder();}
if(getRightChild(root)<knoten.length){root=getRightChild(root);
printInorder();
}
}}
void printPostorder(){
if(root < knoten.length){
if(getLeftChild(root)<knoten.length) {root=getLeftChild(root);
printInorder();}
if(getRightChild(root)<knoten.length){root=getRightChild(root);
printInorder();
}
System.out.println(knoten[root]);
}}
}
und hier ist die testklasse:
Java:
public class TestBaum{
public static void main (String[]args){
char [] values= new char[3];
values[0]='a';
values[1]='b';
values[2]='c';
Baum A= new Baum(values);
A.printInorder();
System.out.println("\n");
A.printPreorder();
System.out.println("\n");
A.printPostorder();
}
}
ich weiß, dass die aufgabe für die meisten in dem forum trivial ist und sie die lösung sofort sehen...
ich habe ca 4 stunden nachgedacht und rumprobiert doch iwie will keine methode klappen...
würde mich sehr auf tipps freuen
mfg