public void insert(TreeNode node) {
			if (initialized()) {
				TreeNode parent = this.root;
				while (true) {
					if (node.value > parent.value) { // rechts einfügen
						if (parent.hasRightChild()) {
							parent = parent.rightChild;
						} else {
							if (this.prematureWiring) {
								node.rightChild = parent.rightChild;
								node.rightIsWire = true;
								
								parent.rightIsWire = false;
								
								node.leftChild = parent;
								node.leftIsWire = true;
							}
							
							parent.rightChild = node;
							break;
						}
					} else { // links einfügen
						if (parent.hasLeftChild()) {
							parent = parent.leftChild;
						} else {
							if (this.prematureWiring) {
								node.leftChild = parent.leftChild;
								node.leftIsWire = true;
								
								parent.leftIsWire = false;
								
								node.rightChild = parent;
								node.rightIsWire = true;
							}
							
							parent.leftChild = node;
							break;
						}
					}
				}
				
				node.parent = parent;
				this.balanceIfNecessary(parent);
			} else {
				this.root = node;
				node.parent = null;
			}
		}