Βρίσκοντας το μικρότερο στοιχείο σε μια δυαδική αναζήτηση Δέντρο - την είσοδο άπειρο βρόχο

ψήφοι
0

Είμαι με τη χρήση επαναληπτικής μεθόδου για τη δημιουργία ενός Binary Search Tree. Στόχος μου είναι να βρούμε τη χαμηλότερη στοιχείο στο δέντρο. Παρακάτω είναι ο κωδικός μου.

Εισαγωγή

node insert(node root, int value)
{
        if ( root == NULL )
        {
                return ((newNode(value)));
        }

        if ( root->info == value )
        {
                std::cout<<Duplicate entry found!<<std::endl;
                return root;
        }
        else if ( root->info > value )
        {
                root->lChild = insert(root->lChild,value);
        }
        else if ( root->info < value )
        {
                root->rChild = insert(root->rChild,value);
        }
        else 
                std::cout<<Some error has occurred.Time to debug!<<std::endl;

        return root;
}

Λειτουργία MINVALUE

int minValue(node curPtr)
{
        node temp = curPtr;
        while ( curPtr )
        {
                temp = curPtr->lChild;
        }
        return (temp->info);
}

Ο λόγος για τον οποίο (ΙΜΟ) MINVALUE μου () εισέρχεται σε άπειρο βρόχο οφείλεται σε curPtr είναι πάντα δεν είναι NULL. Πώς μπορώ να κάνω είναι NULL μετά έχω εισαχθεί τα δεδομένα χρησιμοποιώντας ένθετο () συνάρτηση.

EDIT: Βρέθηκε το bug..so βλακεία μου. Χάρη στην Raymond

παρακάτω είναι η επεξεργασία MINVALUE ()

int  minValue(node curPtr)
{
  node temp = curPtr;
  while ( temp->lChild )
  {
     temp = temp->lChild;
  }
  return (temp->info);
}

Ευχαριστώ Kelly.

Δημοσιεύθηκε 03/09/2011 στις 16:09
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
10

Ποτέ δεν τροποποιήσετε curPtr στο βρόχο σας.

Απαντήθηκε 03/09/2011 στις 16:13
πηγή χρήστη

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