private void replaceForRemove(Node oldNode, Node newNode) {
    // удалить newNode
    removeNode(newNode);
    // удалить oldNode, и вместо него поставить newNode
    if (root == oldNode) {
      root = newNode;
    } else {
      Node parent = oldNode.getParent();
      if (parent.getLeftChild() == oldNode) {
        parent.setLeftChild(newNode);
      } else if (parent.getRightChild() == oldNode) {
        parent.setRightChild(newNode);
      }
    }
    // сыновей oldNode сделать сыновями newNode
    if (oldNode.getLeftChild() != null && oldNode.getLeftChild() != newNode) {
      newNode.setLeftChild(oldNode.getLeftChild());
    }
    if (oldNode.getRightChild() != null && oldNode.getRightChild() != newNode) {
      newNode.setRightChild(oldNode.getRightChild());
    }
  }