private Node<T> substituteLookUp(Node<T> parent, Node<T> node) {
		if (parent == null || node == null) {
			return null;
		}
		if (node.isLeaf()) {
			if (node.equals(parent.getLeft()))
				parent.setLeft(null);
			else
				parent.setRight(null);
			return node;
		} else if (node.getLeft() == null) {
			if (node.equals(parent.getLeft()))
				parent.setLeft(node.getRight());
			else
				parent.setRight(node.getRight());
			return node;
		} else {
			return substituteLookUp(node, node.getLeft());
		}
	}