Usterka segmentacji w binarne drzewo

głosy
1

Albo byłem patrząc na tego kodu na drodze zbyt długo lub po prostu nie mogę zrozumieć ten jeden. ale kiedy użyć pliku tekstowego 8000 numer w porządku malejącym; 8000, 7999, ... otrzymuję winy segmentacji w funkcji wysokości. Jeśli ktoś mógłby spojrzeć będę więc wdzięczny. Dzięki.

    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
Utwórz 17/04/2011 o 04:10
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
1

Jeśli masz posortowaną listę numerów to może być przechowujących to na liście (najgorszy przypadek drzewa wynosi O (n), o ile nie jest zrównoważony).

W tym przypadku, twój rekurencyjne rutynowych będzie recursing 8000 razy głębokości stosu 8000.

Nie wiem, czy to wystarczy do przepełnienia stosu, ale w każdym przypadku należy zapoznać się z drzewa na etapach pośrednich, aby sprawdzić, czy wszystko idzie w dół skrajną lewą gałąź.

Odpowiedział 17/04/2011 o 05:39
źródło użytkownik

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