Segmentation fault in un albero binario

voti
1

O sto fissando a questo codice per troppo tempo o non riesco proprio a capire questo fuori. ma quando uso un file di testo 8000 il numero in ordine decrescente; 8000, 7999, ... ottengo un errore di segmentazione in funzione dell'altezza. Se qualcuno potesse dare un'occhiata sarei così grato. Grazie.

    int BST::height(TreeNode* node)
    {

        int leftSubtree = 0;
        int rightSubtree = 0;
        if (node == NULL)
            return 0;
        else 
        {

            if (node -> getLeft() != NULL)
                leftSubtree = height(node -> getLeft());
            if(node -> getRight() != NULL)      
                rightSubtree = height(node -> getRight());

            if (leftSubtree > rightSubtree)
                return leftSubtree + 1;
            else 
                return rightSubtree + 1;
        }
    }//ends second height
È pubblicato 17/04/2011 alle 04:10
fonte dall'utente
In altre lingue...                            


1 risposte

voti
1

Se si dispone di un elenco ordinato di numeri allora si potrebbe essere la memorizzazione di questo in un elenco (caso peggiore per un albero è O (n) a meno che sia equilibrata).

In questo caso, la vostra routine ricorsiva sarà recursing 8.000 volte con una profondità pila di 8000.

Non so se questo è sufficiente per overflow dello stack, ma in ogni caso si dovrebbe dare un'occhiata al vostro albero in una fase intermedia per vedere se tutto sta andando giù il ramo più a sinistra.

Risposto il 17/04/2011 a 05:39
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more