Wie das minimale Element eines BST zu finden?

stimmen
0

Ich bin ein Anfänger zu c ++ und habe Probleme mit dem minimalen Elemente eines BST zu finden. Die BST wird auf diese Weise durchgeführt:

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);}
};

Die inOrder, Zerstören und Insert Methoden werden wie folgt umgesetzt:

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;
 }
}

Und die Hauptfunktion und der Funktion, die ich die Zahlen zu drucken, verwenden wie folgt aussehen:

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();
}

Wie Sie bemerkt haben, wird die inOrder Verfahren implementiert, vielleicht kann es in irgendeiner Weise verwendet werden, mein Problem ... Sorry für mein schlechtes Englisch lösen zu helfen: /

Veröffentlicht am 24/01/2011 um 19:54
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
4

Der Minimalwert wäre der erste Wert sein, die Aktion in dem obigen Code aufruft. Gehen Sie links, so weit wie möglich, und der Minimalwert werden Sie feststellen, ...

Beantwortet am 24/01/2011 um 19:59
quelle vom benutzer

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