Vollständige Binärbäume


Ein interessanter Sonderfall einer Datenstruktur, deren Strukturinformation implizit gegeben ist und daher nicht gespeichert werden muß, sind vollständige Binärbäume. Diese haben bei gegebener Knotenzahl die minimale Höhe und damit die kürzesten Suchwege; Anwendung finden sie beispielsweise bei dem (hier nicht besprochenen) Sortierverfahren Heapsort.
fulltree
Ein vollständiger Binärbaum wird schrittweise aufgebaut, indem man beginnend an der Wurzel die folgenden "Ebenen" von links beginnend jeweils soweit möglich und nötig auffüllt. Die laufende Nummer eines Knotens bestimmt somit seine Position im Baum vollständig, und man kann die Dateninhalte einfach hintereinander in einem ab 1 indizierten Array ablegen. Ausgehend von der Platznummer eines Knotens im Array findet man die Nummer seines Vaters durch Halbieren; der ältere Sohn hat die doppelte Platznummer, und dessen Bruder liegt unmittelbar dahinter. So kann man bequem im Baum auf- und absteigen, ohne irgendwelche Zeiger mitführen zu müssen.
Nr(Vater(n)) = Nr(n) DIV 2
Nr(Sohn1(n)) = Nr(n) * 2 Nr(Sohn2(n)) = Nr(n) * 2 + 1

zurück | Inhalt | Index | vor | Vorlesung

Klaus Lagally, 22. Februar 2000, 19:36