Segmentace poruchy v binární strom

hlasů
1

Buď jsem se díval na tento kód na cestě příliš dlouho, nebo prostě nemůžu tenhle přijít. ale když jsem se používat 8000 čísla textový soubor v sestupném pořadí; 8000, 7999, ... dostanu chybu segmentace ve funkci výšky. Pokud se někdo mohl se podívat bych být tak vděčný. Dík.

    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
Položena 17/04/2011 v 04:10
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
1

Pokud máte seřazený seznam čísel, pak byste měli být ukládání to v seznamu (nejhorší případ pro stromu je O (n), pokud je vyvážené).

V tomto případě váš rekurzivní rutina bude rekurzi 8000 x komína hloubce 8000.

Já nevím, jestli je to dost k přetečení zásobníku, ale v každém případě byste se měli podívat na svůj strom v mezistupňů aby zjistil, zda je vše jít dolů úplně vlevo větev.

Odpovězeno 17/04/2011 v 05:39
zdroj uživatelem

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