Ein Min-Max-Heap ist in der Informatik eine Baum-Datenstruktur.

Die Min-Max-Heaps sind von Binären Heaps abgeleitet und werden eingesetzt um zweiendige Vorrangwarteschlangen effizient zu implementieren. Hierbei können sowohl das kleinste (findMin) als auch das größte (findMax) Element in konstanter Zeit gefunden werden. Die Neustrukturierung des Baumes nach dem Entfernen (extractMin bzw. extractMax) oder Einfügen (insert) von Elementen ist in logarithmischer Zeit möglich.

Min-Max-Heaps unterscheiden sich von Min-Heaps oder Max-Heaps: Die Knoten des Min-Max-Heaps sind nach dem sogenannten min-max-Prinzip angeordnet. Der Baum wird dabei in gerade und ungerade Ebenen unterteilt. In den geraden Ebenen befinden sich Knoten, die kleiner als alle ihrer Kindknoten sind. Entsprechend befinden sich in den ungeraden Ebenen ausschließlich Knoten, deren Kindknoten kleiner als sie selbst sind. In der Wurzel (in Ebene 0) befindet sich somit das kleinste Element des gesamten Heaps. Das größte Element ist im rechten oder linken Kindknoten der Wurzel zu finden.

Literatur

Bearbeiten
  • M. D. Atkinson, J.-R. Sack, N. Santoro, T. Strothotte: Min-max Heaps and Generalized Priority Queues. In: Communications of the ACM. Band 29, Nr. 10, 1986, ISSN 0001-0782, S. 996–1000, doi:10.1145/6617.6621 (englisch, otago.ac.nz [PDF]).