Skip to content

4.4 Reprezentace haldy v paměti

  • Reprezentace pomocí dynamicky alokovaných spojových struktur je zbytečně komplikovaná.

  • Očíslujme (oindexujeme) vrcholy po hladinách shora dolů a na nich zleva doprava (číslujeme od 1 do \(n\)):

Image title

Vztahy indexů v haldě

Pozorování

Má-li vrchol \(v\) index \(i\), pak

  • jeho levý syn má index \(2i\)
  • jeho pravý syn index \(2i + 1\)
  • jeho otec má index \(\lfloor i/2 \rfloor\)
  • výraz \(i\ mod\ 2\) udává, zda je v připojen k otci levou či pravou hranou, tj. zda je jeho levý či pravý syn.

Důsledek

Haldu lze tedy jednoduše reprezentovat v poli a pohyb po stromu realizovat výše popsanými operacemi s indexy.