Πώς να βρείτε το ελάχιστο στοιχείο της BST;

ψήφοι
0

Είμαι αρχάριος να ++ γ και είμαι έχοντας προβλήματα με την εύρεση του ελάχιστου στοιχείου της BST. Η BST υλοποιείται με αυτόν τον τρόπο:

class Tree{
struct Node {
int Element;
Node *Left, *Right;
Node(int Element) : Element(Element), Left(0), Right(0){}
};

Node *Root;
void InOrder(void(*Action)(int&), Node *Current);
void Destroy(Node *Current);

public:

Tree() : Root(0){}
void Insert(int Element);
void InOrder(void(*Action)(int&)) {InOrder(Action,Root);}
void Destroy() {Destroy(Root);}
};

Η Inorder, Destroy και οι μέθοδοι Εισάγετε εφαρμόζονται ως εξής:

void Tree::Insert(int Element) {
Node *NewElement = new Node(Element);
if(!Root) Root = NewElement;

 else {
 Node *Previous, *Current = Root;

  while(Current) {
   Previous = Current;
   if(Element < Current->Element) Current = Current->Left;
   else Current = Current->Right;
  }

 if(Element < Previous->Element) Previous->Left = NewElement;
 else Previous->Right = NewElement;
 }
}

void Tree::InOrder(void(*Action)(int&),Node *Current) {
  if(Current) {
  InOrder(Action,Current->Left);
  Action(Current->Element);
  InOrder(Action,Current->Right);
}

}

void Tree::Destroy(Node *Current) {
 if(Current) {
  Destroy(Current->Left);
  Destroy(Current->Right);
  delete Current;
 }
}

Και η κύρια λειτουργία και τη λειτουργία που θα χρησιμοποιήσετε για την εκτύπωση των αριθμών μοιάζει κάπως έτσι:

void Print(int &e) {
 cout << e << endl;
}

int main() {
 Tree t;
 while(1) {
 int Number;
 cout << Insert number (insert 0 to end): ;
 cin >> Number;
 if(Number == 0) break;
 t.Insert(Number);
 }

 t.InOrder(Print);
 t.Destroy();
 getch();
}

Όπως ίσως παρατηρήσατε, η μέθοδος Inorder υλοποιείται επίσης, ίσως να μπορεί να χρησιμοποιηθεί με κάποιο τρόπο να βοηθήσει να λύσει το πρόβλημά μου ... Συγγνώμη για την κακή αγγλικά μου: /

Δημοσιεύθηκε 24/01/2011 στις 19:54
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
4

Η ελάχιστη τιμή θα είναι η πρώτη τιμή που ζητά δράσης στον παραπάνω κώδικα. Πηγαίνετε αριστερά όσο μπορείτε, και η ελάχιστη τιμή που θα βρείτε ...

Απαντήθηκε 24/01/2011 στις 19:59
πηγή χρήστη

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