Datenstrukturen und Algorithmen
Ein binärer Heap wird mit der Wurzel in a[0] in einem Array a[0], a[1], a[2], … gespeichert, wobei jede Ebene von oben beginnend von links nach rechts aufgefüllt wird. Welches sind die Kinder und der Elternknoten von a[4]?
- AKinder a[9] und a[10], Elternknoten a[1]
- BKinder a[8] und a[9], Elternknoten a[2]
- CKinder a[9] und a[10], Elternknoten a[2]
Antwort und Erläuterung anzeigen
Antwort: A. Kinder a[9] und a[10], Elternknoten a[1]
Liegt die Wurzel in a[0], sind die Kinder von a[i] die Elemente a[2i+1] und a[2i+2], und der Elternknoten ist a[(i−1) ÷ 2, abgerundet]. Für i = 4 sind die Kinder a[9] und a[10], und der Elternknoten ist a[(4−1) ÷ 2] = a[1]. Liegt die Wurzel in a[1], sind die Kinder a[2i] und a[2i+1] und der Elternknoten a[i ÷ 2]; es ist daher wichtig zu prüfen, welche Konvention gilt. Da ein Heap ein vollständiger Binärbaum ist, lässt er sich ohne Zeiger in einem Array speichern, und Eltern und Kinder werden allein durch Indexrechnung gefunden.