public class baum{ public int bh; public knoten wurzel; public knoten leer; public int first=0; public baum(){ leer=new knoten(); leer.setzeRight(leer); leer.setzeLeft(leer); leer.setzeParent(leer); leer.setzeColour(1); wurzel=leer; int bh=0; } public void addKnoten(knoten x){ x.setzeRight(leer); x.setzeLeft(leer); x.setzeColour(0); if(first==0){ x.setzeParent(leer); x.setzeColour(1); bh++; wurzel=x; first=1; } else { knoten y=wurzel; while(true){ if(y.value()>x.value()){ if(y.left()==leer){ x.setzeParent(y); y.setzeLeft(x); if(y.colour()==0){ repair(x); } break; } else { y=y.left(); } } else if(y.value() Eigenschaft 2 wird sichergestellt if(x.colour()==0){ bh++; } x.setzeColour(1); } public knoten min(knoten x){ while(x.left()!=leer){ x=x.left(); } return x; } public knoten max(knoten x){ while(x.right()!=leer){ x=x.right(); } return x; } public knoten bs_Successor(knoten x){ if(x.right()!=leer){ return min(x.right()); } knoten y=x.parent(); while(y!=leer & x==y.right()){ x=y; y=y.parent(); } return y; } public void ausgabe(knoten x){ System.out.println(x.value()); System.out.println(x.left().value()+" "+x.right().value()); } } // end class