public void insert(T val) {
		Node newNode = new Node<>(val, null, null);
		if(root == null) {
			root = newNode;
			return;
		}
	
		
		Node runnerNode = root;
		while(true) {
			int rc = runnerNode.data().compareTo(val);
			if(rc < 0) {
				if(runnerNode.right() != null) {
					runnerNode = runnerNode.right();
				} else {
					runnerNode.right = newNode;
					break;
				}
			} else if(rc > 0) {
				if(runnerNode.left() != null) {
					runnerNode = runnerNode.left();
				} else {
					runnerNode.left = newNode;
					break;
				}
			} else {
				// TODO dont add since its already added.
			}
		}
		
	}