Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [C++] alberi binari

  1. #1

    [C++] alberi binari

    salve a tutti!

    sto facendo qualche esercizio sugli alberi binari, creazione, stampa, e deallocazione dell'albero.
    compilando nessun problema, ma al momento dell'esecuzione il programma, dopo l'inserimento dei dati, termina con 0 errori, non stampando però i valori dell'albero binario

    la stamp del numero binario credo sia corretta e anche la deallocazione, ecco il codice:

    funzione per creare nuovo nodo:

    codice:
    void crea_nuovo_nodo( albero* &start, int num ){
        albero* temp_p= start;
        albero* new_tree= new albero;
    
    
        while( temp_p != NULL )
        {
            if ( rand() % 2== 0 )
              temp_p= temp_p -> left;
            else
              temp_p= temp_p -> right;
        }
    
    
        new_tree -> info= num;
        new_tree -> left= NULL;
        new_tree -> right= NULL;
        temp_p= new_tree;
    }
    sono consapevole che esiste anche la funzione ricorsiva, sicuramente migliore in termini di prestazioni rispetto a questa, ma ho preferito andare sul facile all'inizio( anche se in un certo senso sarebbe stato più facile la ricorsiva, diciamo che questa possibilità è più comprensiva )

    main:
    codice:
    main()
    {
        albero* init= NULL;
        int n;
    
    
        srand( time( 0 ) );
    
    
        for( int l= 1; l <= 10; l++ )
        {
            cout << "inserisci il " << l << " numero:" << endl;
            cin >> n;
    
    
            crea_nuovo_nodo( init, n );
        }
    
    
        stampa_albero( init );
        cancella_lista( init );
    }
    l'algoritmo di stampa è corretto perchè uguale identico a quelli sul web...
    non riesco a trovare il perchè..

    grazie mille in anticipo!

  2. #2
    Ci sono un paio di errori nella funziona crea_nuovo_nodo:


    1. In caso la lista sia vuota non modifichi il puntatore alla radice(start) ma solo tmp_p causando la perdita dell'oggetto appena creato.
    2. Poniamo il caso che il punto 1 sia già implementato nel codice e che sia funzionante. Sorge ora il problema di inserire tutti i vari nodi figli che, per come è attualmente il codice, non viene risolto correttamente, in quanto assegni sì a tmp_p il nodo creato ma lo fai quando tmp_p è uguale a NULL e cioè quando hai perso ogni riferimento all'albero.

  3. #3
    grazie mille per avermi aiutato a risolvere il problema! adesso ho capito come risolverli
    ciao!
    Ultima modifica di maluz1; 05-10-2013 a 16:38

  4. #4
    Felice di essere stato d'aiuto.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.