Datastructuren en algoritmen
Een binaire heap wordt opgeslagen in een array a[0], a[1], a[2], … met de wortel in a[0], waarbij elk niveau van bovenaf van links naar rechts wordt gevuld. Wat zijn de kinderen en de ouder van a[4]?
- AKinderen a[9] en a[10], ouder a[1]
- BKinderen a[8] en a[9], ouder a[2]
- CKinderen a[9] en a[10], ouder a[2]
Antwoord en toelichting tonen
Antwoord: A. Kinderen a[9] en a[10], ouder a[1]
Met de wortel in a[0] zijn de kinderen van a[i] de elementen a[2i+1] en a[2i+2], en is de ouder a[(i−1) ÷ 2, naar beneden afgerond]. Voor i = 4 zijn de kinderen a[9] en a[10] en is de ouder a[(4−1) ÷ 2] = a[1]. Met de wortel in a[1] zijn de kinderen a[2i] en a[2i+1] en is de ouder a[i ÷ 2]; het is dus belangrijk na te gaan welke conventie wordt gebruikt. Omdat een heap een complete binaire boom is, kan hij zonder pointers in een array worden opgeslagen, en worden ouders en kinderen alleen met indexberekeningen gevonden.