Segmentering feil i et binært tre

stemmer
1

Enten har jeg stirret på denne koden for altfor lenge, eller jeg kan bare ikke finne dette ut. men når jeg bruker en 8000 nummer tekstfil i synkende rekkefølge; 8000, 7999, ... jeg får en segmentering feil i høydefunksjonen. Hvis noen kunne ta en titt jeg ville være så takknemlig. Takk.

    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
Publisert på 17/04/2011 klokken 03:10
kilden bruker
På andre språk...                            


1 svar

stemmer
1

Hvis du har en sortert liste med tall så er du kanskje lagre dette i en liste (worst case for et tre er O (n) med mindre det er balansert).

I dette tilfellet, vil rekursiv rutine være recursing 8000 ganger med en stabel dybde av 8000.

Jeg vet ikke om dette er nok til å renne over bunken, men i alle fall bør du ta en titt på treet ved mellomliggende trinn for å se om alt går ned lengst til venstre grenen.

Svarte 17/04/2011 kl. 04:39
kilden bruker

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