# K.O. Match Baum aufbauen



## ReX_ (8. Mai 2012)

Hallo zusammen,

ich Entwickel grade fuer meinen Sportverein ein Programm zur Verwaltung von Turnieren. Im Moment habe ich aber das Problem, dass ich ein K.O. System abbilden muss. Ich hab mir bisher folgendes ueberlegt:

Ich habe vor einen binaeren Baum aufbauen, bei dem jeder Knoten ein Match repraesentiert. Zu Beginn sind in den unteren Knoten die Teilnehmer. Die dann bei einem Sieg in den naechsten Knoten aufruecken. Soweit kein Problem.

Ich finde nur keinen Sinnvollen Algorithmus, um den Baum auf zu bauen. Die Anzahl der Knoten ist ja von der Anzahl der Teilnehmer abhaengig (n-1). Hat jemand eine Idee oder ein Beispiel wie man das sinnvoll umsetzen kann.

Danke schonmal.


----------



## Final_Striker (8. Mai 2012)

Was meist du damit genau "um einen Baum aufzubauen" ?

Schreib dir doch einfach eine eigene Klasse Turnierbaum und fertig.


----------



## ReX_ (9. Mai 2012)

Eine solche Klasse habe ich. Das Problem ist, dass ich den Baum rekursiv aufbauen will/muss und nicht wirklich eine Idee habe wann ich den Algorithmus stoppen muss. Wenn ich nach der Anzahl der Teilnehmer gehe und stoppe wennn ich keine 2 Teilnehmer merh habe, kriege ich keinen Baum sondern eher so was wie eine Liste von Knoten. 

Der Baum soll/muss aber wie bei einem Tournierbaum ueblich minimal spannend sein.


----------



## Final_Striker (9. Mai 2012)

Du kannst doch vorher ausrechnen wie tief der Baum sein muss und dann erstellst du halt einen Baum mit der benötigten Tiefe.


----------



## timbeau (9. Mai 2012)

In einem Array ganz simpel mit LeftChild = index *2 und RightChild = index * 2 + 1

D.H. der Sieger von Knoten 5 geht in Knoten 2 und spielt gegen Sieger von Knoten 4

Finale ist Knoten 1, da der 0-te Index unpassend ist


----------



## ReX_ (11. Mai 2012)

Sorry, dass ich erst jetzt antworte, aber ich kam vorher nicht dazu. Die Idee mit dem Array war super. So habs ich jetzt geloest. Den Index 0 benutze ich fuer das Kleine Finale (also Kampf um Platz 3), da ich das eh extra behandeln muss.


----------

