package algodataufg04_j; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { /** * @param args the command line arguments */ public static void main(String[] args) throws IOException { BufferedReader console = new BufferedReader(new InputStreamReader(System.in)); BinST tree = new BinST(); String in = null; int key; tree.root = null; tree.insert(200); tree.insert(100); tree.insert(300); tree.insert(50); tree.insert(150); /*tree.insert(79); tree.insert(27); tree.insert(15); tree.insert(30); /*tree.insert(30); tree.insert(50); tree.insert(20); tree.insert(25); tree.insert(22); tree.insert(27); tree.insert(10);*/ System.out.println("Aufgabe B - Binaerer Suchbaum"); //Ausgabe des Menues try { do { System.out.println("\n"); tree.rwlGraph(tree.root, 0, 'W'); System.out.println("\n\n Menu:"); System.out.println("Knoten hinzufuegen:\tA"); System.out.println("Knoten loeschen:\tD"); //System.out.println("\tFind node: F"); System.out.println("Baum ausgeben:\t\tP"); System.out.println("Preorder:\t\twlr, wrl"); System.out.println("Postorder:\t\tlrw, rlw"); System.out.println("Inorder:\t\tlwr, rwl"); System.out.println("Rotation:\t\trotL, rotR, rotDR"); System.out.println("Hoehe Teilbaum:\t\th"); System.out.println("Anzahl Knoten:\t\tc"); System.out.println("Parent:\t\t\tx"); System.out.println("Iterativ hinzufuegen:\ty"); System.out.print("\n\nAuswahl: "); in = console.readLine().toUpperCase(); switch (in.charAt(0)) { case 'X': System.out.print("Schluessel: "); key = Integer.parseInt(console.readLine()); System.out.println("Parent: " + tree.getParent(key)); break; case 'A': //Knoten hinzufuegen System.out.print("key="); key = Integer.parseInt(console.readLine()); tree.insert(key); break; case 'D': System.out.print("key="); key = Integer.parseInt(console.readLine()); tree.delete(key); break; /*case 'F': System.out.print("key="); key=console.intInputLine(); check=tree.find(key); System.out.print("Found: "+check); break;*/ case 'P': tree.rwlGraph(tree.root, 0, 'W'); break; case 'Y': System.out.print("key="); key = Integer.parseInt(console.readLine()); tree.insertIt(key); break; case 'H': System.out.print("key="); key = Integer.parseInt(console.readLine()); System.out.println("Hoehe des Teilbaums: " + tree.hoehe(key)); break; case 'C': System.out.print("key="); key = Integer.parseInt(console.readLine()); System.out.println("Anzahl der Knoten: " + tree.countN(key)); break; case 'L': if (in.charAt(1) == 'W') { tree.lwr(tree.root); } if (in.charAt(1) == 'R') { tree.lrw(tree.root); } break; case 'W': if (in.charAt(1) == 'L') { tree.wlr(tree.root); } if (in.charAt(1) == 'R') { tree.wrl(tree.root); } break; case 'R': if (in.charAt(1) == 'L') { tree.rlw(tree.root); } if (in.charAt(1) == 'W') { tree.rwl(tree.root); } if (in.charAt(1) == 'O') { if (in.charAt(3) == 'R') { System.out.print("key="); key = Integer.parseInt(console.readLine()); tree.rotateRight(key); } else if (in.charAt(3) == 'L') { System.out.print("key="); key = Integer.parseInt(console.readLine()); tree.rotateLeft(key); } else if (in.charAt(3) == 'D') { System.out.print("key="); key = Integer.parseInt(console.readLine()); tree.doubleRotate(key); } } break; } } while (in.charAt(0) != 'E'); System.out.print("\n"); } catch (StringIndexOutOfBoundsException e) { System.out.println("Unknown command..."); System.out.println("Exiting..."); } } }