public static <E extends Comparable<E>> BinaryTreeNode<E> insertNode(BinaryTreeNode<E> root, E value) {
		if(root==null) {
			root = new BinaryTreeNode<E>(value);
			return root;
		}
		
		BinaryTreeNode<E> node = root;
		while(node != null) {
			if(value.compareTo(node.value)>0) {
				if(node.right == null) {
					BinaryTreeNode<E> newNode = new BinaryTreeNode<E>(value);
					node.right = newNode;
					break;
				} else {
					node = node.right;
				}
			} else if(value.compareTo(node.value)<0) {
				if(node.left == null) {
					BinaryTreeNode<E> newNode = new BinaryTreeNode<E>(value);
					node.left = newNode;
					break;
				} else {
					node = node.left;
				}
			} else {
				System.out.println(value + " is already exists...");
				break;
			}
		}
		
		return root;
	}