Originariamente inviato da goatboy
Salve a tutti, ho un problema con la ricerca di un intero all'interno di un albero binario.
Questa è la funzione di ricerca, presa dal libro di testo da cui sto studiando, e mi è chiara.

codice:
TNode *binarytree_search(TBinaryTree bt, TInfo info){
    /* Caso base: Albero vuoto oppure la root è l'elemento cercato */
    if((bt==NULL) || bt->info==info){
        return bt;
    }else{
        if(info>bt->info){
            /* Fase di divide et impera */
            return binarytree_search(bt->right, info);
        }else{
            /* Fase di divide et impera */
            return binarytree_search(bt->left, info);
        }
    }
}
Restituisce il riferimento all'elemento, se è presente, altrimenti restituisce null.
Ma ho un dubbio, non riesco a capire cosa voglia dire "restituisce il riferimento"..
Come posso stampare il numero di occorrenze del numero cercato? La funzione è di tipo TNode e non capisco perchè, di solito le funzioni di ricerca sono di tipo int.

Ho provato così ma ho sicuramente combinato un macello, anche se non mi da errori..

codice:
printf("Inserisci l'elemento che vuoi cercare: ");
scanf("%d", &num);
src=binarytree_search(bt, num);
printf("L'elemento e' presente %d volte\n\n", src);
Qualche consiglio? Ho lo stesso problema anche con le funzioni di ricerca del massimo e del minimo in un albero.
Cosa vuol dire "di solito sono di tipo int"? Quella non è una funziona che conta le occorrenze di un elemento, ma una funzione che restituisce il puntatore ad un nodo contenente l'elemento cercato, se esiste. Tu cosa vuoi fare, cercare un nodo (ed eventualmente ottenerne il riferimento) o contare le occorrenze di un elemento?

Comunque per riferimento di qualcosa s'intende il suo indirizzo, ciò che viene messo all'interno di un puntatore.