Segmentation fault in einem Binary Tree

stimmen
1

Entweder ich habe zu lange auf diesem Code für Art und Weise starre oder ich kann einfach nicht diesen herauszufinden. aber wenn ich eine 8000-Nummer Textdatei in absteigender Reihenfolge; 8000, 7999, ... Ich bekomme einen Segmentierungsfehler in der Höhenfunktion. Wenn jemand einen Blick darauf werfen könnte, würde ich so dankbar sein. Vielen Dank.

    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
Veröffentlicht am 17/04/2011 um 04:10
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Wenn Sie eine sortierte Liste von Zahlen haben, dann können Sie diese in einer Liste werden die Speicherung (worst case für einen Baum ist O (n), wenn es im Gleichgewicht ist).

In diesem Fall wird Ihre rekursive Routine Rekursion 8000 mal mit einer Stack-Tiefe von 8000.

Ich weiß nicht, ob dies genug ist, um den Stapel zu überlaufen, aber in jedem Fall sollten Sie einen Blick auf Ihrem Baum an Zwischenstufen zu sehen, ob alles, was den linken Zweig hinuntergeht.

Beantwortet am 17/04/2011 um 05:39
quelle vom benutzer

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