Segmentation fault dans un arbre binaire

voix
1

Soit je suis les yeux fixés sur ce code pour trop longtemps ou je ne peux pas comprendre cela. mais quand j'utilise un fichier texte numéro 8000 dans l'ordre décroissant; 8000, 7999, ... je reçois une erreur de segmentation dans la fonction de la hauteur. Si quelqu'un pouvait regarder, je serais très reconnaissant. Merci.

    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
Créé 17/04/2011 à 04:10
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

Si vous avez une liste triée des numéros, vous pourriez stocker ces dans une liste (pire des cas pour un arbre est O (n) à moins qu'il ne soit équilibré).

Dans ce cas, votre routine récursive sera récursion 8000 fois avec une profondeur de pile de 8000.

Je ne sais pas si cela est suffisant pour déborder la pile, mais en tout cas, vous devriez jeter un oeil à votre arbre à des étapes intermédiaires pour voir si tout va sur la branche gauche.

Créé 17/04/2011 à 05:39
source utilisateur

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