Sitzung 3
Aus inorder und preorder Baum erzeugen und mit postorder durchlaufen
class Baum{
String wert;
Baum left, right;
static String preorder="";
static Baum erzeuge(String inorder){
if (preorder.equals("")) return null;
if (inorder.equals("")) return null;
// if (! inorder.contains(preorder.substring(0,1))) return null;
Baum k = new Baum();
String inh = preorder.substring(0,1);
System.out.println("inh "+inh);
k.wert = inh;
int stelle = inorder.indexOf(inh);
String links = "";
for (int i=0;i<stelle ; i++) links = links + inorder.substring(i,i+1);
String rechts = "";
for (int i=stelle+1;i<inorder.length() ; i++) rechts = rechts + inorder.substring(i,i+1);
preorder = preorder.substring(1,preorder.length());
k.left = erzeuge((links));
k.right = erzeuge((rechts));
return k;
}
static void inord(Baum b){
if (b!=null) {
inord(b.left);
System.out.print(b.wert);
inord(b.right);
}
}
static void postord(Baum b){
if (b!=null) {
postord(b.left);
postord(b.right);
System.out.print(b.wert);
}
}
public static void main(String args[]){
String inorder = "ADCGBHEFI";
preorder = "CDAFGHBEI";
Baum b;
b = erzeuge((inorder));
System.out.println();
inord(b);
System.out.println();
postord(b);
}
}