fallo de segmentación en un árbol binario

votos
1

O yo he estado mirando este código por demasiado tiempo o simplemente no puedo imaginar éste. pero cuando se utiliza un archivo de texto 8000 número en orden descendente; 8000, 7999, ... me sale un fallo de segmentación en función de la altura. Si alguien puede echar un vistazo Yo estaría muy agradecido. Gracias.

    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
Publicado el 17/04/2011 a las 04:10
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

Si usted tiene una lista ordenada de números entonces se podría estar almacenando esta en una lista (en el peor caso para un árbol es O (n) a menos que sea equilibrada).

En este caso, su rutina recursiva será recursiva 8000 veces con una profundidad de la pila de 8000.

No sé si esto es suficiente para desbordar la pila, pero en cualquier caso hay que echar un vistazo a su árbol en etapas intermedias para ver si todo está bajando la rama más a la izquierda.

Respondida el 17/04/2011 a las 05:39
fuente por usuario

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