Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [c++] Visita per livello alberi binari Ricorsiva

    Salve a tutti,
    avrei un piccolo problema riguardo agli alberi binari, in internet o sulle slide delle lezioni riesco a trovare la visita per livelli (detta anche in ampiezza) solo in maniera iterativa, mentre io avrei bisogno di quella ricorsiva.

    Non essendo molto bravo con le funzioni ricorsive sapreste aiutarmi voi a convertirla?

    codice:
    PROCEDURE visita_livello (T albero)
    coda c, tipolelema ,nodo u
    u <- binradice(T)
    creacoda(C)
    incoda(u,C)
    WHILE (codavuota(C) = FALSE) DO
    u <- leggicoda(C)
    fuoricoda(C)
    a<- legginodo(u,T)
    SCRIVI (a)
    IF (sinistrovuoto(u,T) = FALSE)THEN
    incoda(figliosinistro(u,T))
    IF (destrovuoto(u,T) = FALSE)THEN
    incoda(figliodestro(u,T))
    Sostanzialmente nella versione iterativa utilizza una coda di appoccio di cui nella versione ricorsiva immagino non ne avremo bisogno, ma ripeto non riesco a convertirla da solo.

    Vi ringrazio,
    Neptune.
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  2. #2
    Ci sono essenzialmente tre tipi di visita ricorsiva di un albero binario: simmetrica, anticipata e differita. Tutte molto semplici. Ti faccio l'esempio dell'ultima:

    codice:
    void postOrder( TREENODE *treePtr )
    {
        if( treePtr != NULL )
        {
             postOrder( treePtr->left );
             postOrder( treePtr->right );
             
             cout << treePtr->data;
         }
    }

    In questo caso il valore di ogni nodo non verrà visualizzato fino a quando non saranno visualizzati i valori dei propri figli.
    Fracty - The Fractal Generator



    If you cannot choose a concise name that expresses what the method does, it is possible that your method is attempting to perform too many diverse tasks.

  3. #3
    Originariamente inviato da GliderKite
    Ci sono essenzialmente tre tipi di visita ricorsiva di un albero binario: simmetrica, anticipata e differita. Tutte molto semplici. Ti faccio l'esempio dell'ultima:

    codice:
    void postOrder( TREENODE *treePtr )
    {
        if( treePtr != NULL )
        {
             postOrder( treePtr->left );
             postOrder( treePtr->right );
             
             cout << treePtr->data;
         }
    }

    In questo caso il valore di ogni nodo non verrà visualizzato fino a quando non saranno visualizzati i valori dei propri figli.
    Quelle sono le visite per profondità, mi domandavo se invece fosse possibile sviluppare in maniera ricorsiva anche la visita ampiezza. Purtroppo in internet ho trovato solo algoritmi iterativi (ed iniziavo a domandarmi se quindi era possibile o meno crearla ricorsiva).
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.