public void setRight(Node<T> right) {
		this.right = right;
	}
	
	
}
class Tree<T extends Comparable<T>> {
	private Node<T> head = null;
	public void add(T o) {
		head = add(o, head);
	}
	
	private Node<T> add(T o, Node<T> node) {
		if(node == null) {
			node = new Node<T>();
			node.setData(o);
			return node;
		} else if(o.compareTo(node.getData()) < 0) {
			 node.setLeft(add(o, node.getLeft()));
		} else if(o.compareTo(node.getData()) > 0) {
			node.setRight(add(o, node.getRight()));
		}
		return node;
	}
	
	public void list() {
		if(head == null) {
			System.out.println("Empty Tree");
			return;
		} else {
			inOrder(head);
		}
	}
	
	private void inOrder(Node<T> node) {
		if(node != null) {
			inOrder(node.getLeft());
			System.out.println(node.getData());
			inOrder(node.getRight());
		} else {
			return;
		}
	}
	
	public T search(T o) {
		if(o == null) {
			System.out.println("Search Item is NULL");
			return null;
		} else if(head == null) {
			System.out.println("Data is Empty in Tree");
			return null;
		} else {
			return inOrderSearch(head, o);
		}
	}
	
	private T inOrderSearch(Node<T> node, T o) {
		if(node == null) {
			System.out.println("Not Found");
			return null;
		}
		
		if(o.compareTo(node.getData()) < 0) {
			return inOrderSearch(node.getLeft(), o);
		}  else if(o.compareTo(node.getData()) > 0) {
			return inOrderSearch(node.getRight(), o);
		} else {
			System.out.println("Found");
			return node.getData();
		}
	}