36 {
37
38 if (args.length<2)
39 usage();
40
41 String type=null;
42 String format=null;
43
44 if (args[1].compareTo("svg")==0 ||
45 args[1].compareTo("pdf")==0) {
46 format=args[1];
47 }
48 else if (args[1].compareTo("-")!=0) {
49 System.err.println("invalid FORMAT specifier '"+args[1]+"'");
50 usage();
51 }
52
53 Scanner s=new Scanner(System.in);
54 s.useDelimiter("(\\s|;,\\.-\"\\'\\(\\)\\[\\])+");
55
56 Graphvizable showMe=null;
57 BinarySearchTree<String,String> tree=null;
58
59 if (args[0].compareTo("b")==0) {
60 type="binary search";
61 tree=new BinarySearchTree<String,String>();
62 }
63 if (args[0].compareTo("avl")==0) {
64 type="AVL-";
65 tree=new AVLTree<String,String>();
66 }
67 else if (args[0].compareTo("rb")==0) {
68 type="red-black ";
69 tree=new RedBlackTree<String,String>();
70 }
71
72 if (tree!=null) {
73 while (s.hasNext())
74 tree.insert(s.next(),null);
75 showMe=tree;
76 }
77 else {
78
79 if (args[0].compareTo("234")==0) {
80 type="2-3-4-";
81 A234Tree<String> t=new A234Tree<String>();
82 while (s.hasNext())
83 t.insert(s.next());
84 showMe=t;
85 }
86 else if (args[0].compareTo("B")==0) {
87 type="B-";
88 if (args.length<3) {
89 System.err.println("missing parameter M");
90 usage();
91 }
92 BTree<String> t=new BTree<String>(Integer.parseInt(args[2]));
93 while (s.hasNext())
94 t.insert(s.next());
95 showMe=t;
96 }
97 else {
98 System.err.println("invalid TREE specifier '"+args[0]+"'");
99 usage();
100 }
101 }
102
103 System.err.println("Rendering output.");
104
105 if (format!=null) {
106 File dotfile=Sys.writeToFile(new File("tree.dot"),showMe.toDot());
107 File outfile=(new Graphviz()).renderDotFileToFile(dotfile,format);
108 System.err.println("Wrote '"+dotfile+"' and '"+outfile+"'");
109 }
110 else
111 DotViewer.displayWindow(showMe,type+"tree").setExitOnClose();
112 }