void _delete(Node*& root) { Node* aux = root; if (!aux->left) { root = root->right; // delete aux; } else if (!aux->right) { root = root->left; // delete aux; } else { aux = root->left; while (aux->right) { aux = aux->right; } root->value = aux->value; _delete(aux); } }