Segmentation fault in een Binary Tree

stemmen
1

Of ik heb staren deze code veel te lang of ik kan gewoon niet achterhalen dit een uit. maar wanneer ik een 8000 nummer tekstbestand in aflopende volgorde; 8000, 7999, ... krijg ik een segmentation fault in de hoogte functie. Als iemand een kijkje kon nemen zou ik zo dankbaar zijn. Bedankt.

    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
De vraag is gesteld op 17/04/2011 om 04:10
bron van user
In andere talen...                            


1 antwoorden

stemmen
1

Als u een gesorteerde lijst van nummers dan u misschien wel het opslaan van deze in een lijst (slechtste geval voor een boom is O (n), tenzij het is gebalanceerd).

In dit geval zal uw recursieve routine recursief 8000 maal met een stapel diepte van 8000.

Ik weet niet of dit genoeg is om de stack overflow, maar in ieder geval moet u een kijkje nemen op uw boom in tussenproducten tijdens nemen om te zien of alles naar beneden gaat de meest linkse tak.

antwoordde op 17/04/2011 om 05:39
bron van user

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