Please give me some feedback on how I could make it better or simpler.
public class BinarySearchTree {
private static TreeNode root;
public static void main(String args[]) {
BinarySearchTree bst = new BinarySearchTree();
root = bst.addItem(root, 10);
bst.addItem(root, 2);
bst.addItem(root, 6);
bst.addItem(root, 3);
bst.addItem(root, 1);
bst.addItem(root, 15);
bst.addItem(root, 12);
bst.addItem(root, 16);
System.out.println("** Print BST PRE ORDER **");
bst.printPreOrderTree(root);
System.out.println("** Print BST IN ORDER **");
bst.printInOrderTree(root);
System.out.println("** Print BST POST ORDER **");
bst.printPostOrderTree(root);
}
private TreeNode addItem(TreeNode root, int item) {
if (root == null) {
root = new TreeNode(null, item, null);
return root;
} else {
if (item < root.element) {
if (root.left == null) {
TreeNode node = addItem(root.left, item);
root.left = node;
} else {
addItem(root.left, item);
}
} else if (item > root.element) {
if (root.right == null) {
TreeNode node = addItem(root.right, item);
root.right = node;
} else {
addItem(root.right, item);
}
} else {
System.out.println("Duplicate Item");
}
}
return root;
}
private void printPreOrderTree(TreeNode root) {
if (root != null) {
System.out.println(root.element);
printPreOrderTree(root.left);
printPreOrderTree(root.right);
}
}
private void printInOrderTree(TreeNode root) {
if (root != null) {
printInOrderTree(root.left);
System.out.println(root.element);
printInOrderTree(root.right);
}
}
private void printPostOrderTree(TreeNode root) {
if (root != null) {
printPostOrderTree(root.left);
printPostOrderTree(root.right);
System.out.println(root.element);
}
}
private static class TreeNode {
TreeNode left;
int element;
TreeNode right;
protected TreeNode(TreeNode left, int element, TreeNode right) {
this.left = left;
this.element = element;
this.right = right;
}
}
}