Es porque estas retornando en:
Código:
if(this->hermano!=NULL)
return this->hermano->buscar(ch);
Ahí tendrías que guardar le valor en una variable, no retornar.
Algo como:
Código:
if (this->hermano != NULL) {
NodoArbol enHermano = this->hermano->buscar(ch);
if (enHermano != NULL) return enHermano; // solo retorno en caso de haber encontrado
}
if (this->hijo != NULL) {
NodoArbol enHijo = this->hijo->buscar(ch);
if (enHijo != NULL) return enHijo; // solo retorno en caso de haber encontrado
}
return NULL;
No me acuerdo si podías definir y usar la misma clase en C++, que parece ser el lenguaje que estas usando, pero la idea sería esa igual.