σφάλμα κατάτμησης σε ένα δυαδικό δέντρο

ψήφοι
1

Είτε έχω κοιτάζοντας αυτόν τον κωδικό για πάρα πολύ καιρό ή απλά δεν μπορώ να καταλάβω αυτό έξω. αλλά όταν χρησιμοποιώ ένα αρχείο κειμένου 8000 σειρά φθίνουσα σειρά? 8000, 7999, ... να πάρω ένα σφάλμα κατάτμησης σε συνάρτηση ύψος. Αν κάποιος θα μπορούσε να ρίξετε μια ματιά θα ήμουν τόσο ευγνώμων. Ευχαριστώ.

    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
Δημοσιεύθηκε 17/04/2011 στις 04:10
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
1

Αν έχετε μια ταξινομημένη λίστα των αριθμών τότε ίσως να αποθηκεύσετε αυτή σε μια λίστα (χειρότερη περίπτωση για ένα δέντρο είναι O (n) αν δεν είναι ισορροπημένη).

Σε αυτή την περίπτωση, αναδρομικές ρουτίνα σας θα είναι αναδρομική ανάκτηση 8000 φορές με βάθος στοίβα 8000.

Δεν ξέρω αν αυτό είναι αρκετό για να ξεχειλίσει το stack, αλλά σε κάθε περίπτωση θα πρέπει να ρίξετε μια ματιά στο δέντρο σας σε ενδιάμεσα στάδια για να δούμε αν όλα πάνε κάτω από το αριστερό κλάδο.

Απαντήθηκε 17/04/2011 στις 05:39
πηγή χρήστη

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