Segmentarea vina într-un arbore binar

voturi
1

Ori am fost holbezi la acest cod pentru prea mult timp sau pur și simplu nu pot figura asta afară. dar atunci când folosesc un fișier text 8000 număr în ordine descrescătoare; 8000, 7999, ... I a lua o eroare de segmentare în funcția de înălțime. Dacă cineva ar putea să aruncați o privire, aș fi atât de recunoscător. Mulțumiri.

    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
Întrebat 17/04/2011 la 04:10
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
1

Dacă aveți o listă de numere sortate, atunci s-ar putea să fie depozitați într-o listă (cel mai rău caz, pentru un arbore este O (n) dacă nu este echilibrată).

În acest caz, rutina recursiv va fi recursiune 8000 de ori, cu o adâncime teanc de 8000.

Nu știu dacă acest lucru este suficient să se reverse stiva, dar în orice caz, ar trebui să aruncăm o privire la copac la etapele intermediare pentru a vedea dacă totul merge în jos stânga ramura.

Publicat 17/04/2011 la 05:39
sursa de către utilizator

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