package info3;
/**
*
* Info 3 Blatt 3, Aufgabe 2
*
* @author fieberfn, hatjeki
*
*
* Class that implements a binary search tree. Elements smaller than the one
* looked at come to the left. If you insert an element already contained it
* will come to the right. Implemented functions are contains and insert.
* Contains and insert are implemented with variable parameter lists.
*
*/
public class BinarySearchTree> {
private BinaryTree anchor;
BinarySearchTree() {
}
public void insert(T Item) {
if (anchor == null) {
anchor = new BinaryTree (Item);
} else {
insert(Item, anchor);
}
}
private void insert (T Item, BinaryTree tree) {
if (tree != null) {
if (Item.compareTo(tree.Item) < 0) {
System.out.println(Item+" ist kleiner als "+tree.Item);
} else {
System.out.println(Item+" ist groesser als "+tree.Item);
}
}
if (tree == null) {
System.out.println("Creating new Node in Tree");
tree = new BinaryTree (Item);
} else if (Item.compareTo(tree.Item) < 0) {
System.out.println("Inserting "+Item+" to left");
insert (Item, tree.left);
} else {
System.out.println("Inserting "+Item+" to right");
insert (Item, tree.right);
}
}
// public T contains (T param) {
// T foo;
// return foo;
// }
public void insert (T... params) {
for (T element : params) {
insert (element);
}
}
// public T[] contains (T... params) {
// T[] foo;
// return foo;
// }
public void putInorder () {
putInorder(anchor);
}
private void putInorder (BinaryTree tree) {
if (tree != null) {
System.out.println("tree: " + tree);
System.out.println("tree.left: " + tree.left);
System.out.println("tree.right: " + tree.right);
putInorder(tree.left);
System.out.println(tree.Item);
putInorder(tree.right);
}
}
/**
* @param args
*/
public static void main(String[] args) {
BinarySearchTree Baum = new BinarySearchTree();
// for (int i = 0; i <= 2; i++) {
// Baum.insert(i + 1);
// }
Baum.insert(Integer.valueOf(1));
Baum.insert(Integer.valueOf(7));
Baum.insert(Integer.valueOf(5));
Baum.insert(Integer.valueOf(4));
Baum.insert(Integer.valueOf(2));
Baum.putInorder();
}
}