이 코드는 노드를 제거하거나 이진 트리에서 리프를 떼어 내기 위해 사용합니다. 여기서 'elemento'는 사용자가 입력 한 값이고 raiz는 내 트리입니다.사용자가 값을 제거하려고하지만이 값이 이진 트리에 없습니다. 그것을 치료하는 방법?
내 문제는 : 사용자가 트리에없는 숫자 (elemento)를 입력하면 어떻게해야할지 모르겠다. 나는 몇 가지 방법을 시도했지만 아무 것도 효과가 없었습니다. 값을 찾을 수 없을 때 무언가를 출력하고 싶습니다.
void removerNo(no **raiz, int elemento)
{
if(elemento < (*raiz)->valor){
removerNo(&(*raiz)->esq,elemento);
}
else if(elemento > (*raiz)->valor){
removerNo(&(*raiz)->dir,elemento);
}
else if((*raiz)->esq!=NULL && (*raiz)->dir!=NULL){
no *aux = NULL;
aux = DoisFilhos((*raiz)->dir);
(*raiz)->valor = aux->valor;
removerNo(&(*raiz)->dir,(*raiz)->valor);
} else{
no *aux = (*raiz);
if((*raiz)->esq==NULL){
(*raiz) = (*raiz)->dir;
}
else{
*raiz = (*raiz)->esq;
}
free(aux);
}
};
감사 :
다음은 기능 코드입니다.
고맙습니다. –