private void removeFoundNode(TreeNode removingNode) {
		TreeNode parentNode;

		if (removingNode.left == null || removingNode.right == null) {

			parentNode = removingNode;

		} else {

			parentNode = successor(removingNode);
			removingNode.key = parentNode.key;

		}

		TreeNode childNode;
		if (parentNode.left != null) {

			childNode = parentNode.left;

		} else {

			childNode = parentNode.right;

		}

		if (childNode != null) {

			childNode.parent = parentNode.parent;

		}

		if (parentNode.parent == null) {

			this.root = childNode;

		} else {

			if (parentNode == parentNode.parent.left) {

				parentNode.parent.left = childNode;

			} else {

				parentNode.parent.right = childNode;

			}

			recursiveBalance(parentNode.parent);

		}

		parentNode = null;

	}