public void insert(E e){
		if(root == null)
			root = new TreeNode<E>(e); // if root is null, build root
		else{
			TreeNode<E> current = root;
			TreeNode<E> parent;
			for(;;){
				parent = current;
				if(e.compareTo(current.value) < 0){
					current = current.left;
					if(current == null){
						parent.left = new TreeNode<E>(e);
						break;
					}
				}else{
					current = current.right;
					if(current == null){
						parent.right = new TreeNode<E>(e);
						break;
					}
				}
			}
		}
	}