public void addNodeBalanced(int newLeafValue) {
		treeNode newNode = new treeNode(newLeafValue);

		// root node is last insert, add to left child
		if (this.lastInsertNode == this.root) {
			this.lastInsertNode.leftLeaf = newNode;
			newNode.parent = this.lastInsertNode;
			this.lastInsertNode = newNode;
			return;
		}

		treeNode lastParent = this.lastInsertNode.parent;
		// if last insert node is left child, right child must be empty
		if (lastParent.leftLeaf == this.lastInsertNode) {
			// right sibling must be empty
			lastParent.rightLeaf = newNode;
			newNode.parent = lastParent;
			this.lastInsertNode = newNode;
			return;
		}

		// if last insert node is right child
		treeNode nextInsertParent = this.getNextInsertParent();
		nextInsertParent.leftLeaf = newNode;
		newNode.parent = nextInsertParent;
		this.lastInsertNode = newNode;
		return;
	}