Sobes.tech
Middle

Aké sú klasifikácie hald v kontexte dátových štruktúr?

sobes.tech AI

Odpoveď od AI

V kontexte dátových štruktúr sa pod pojmom "hromáda" (Heap) zvyčajne rozumie binárna hromáda (Binary Heap), ktorá má nasledujúce klasifikácie:

  1. Podľa typu usporiadania:

    • Min-hromáda (Min-Heap): Hodnota každého uzla je menšia alebo rovná hodnotám jeho detí. Koreň je najmenší prvok.
    • Max-hromáda (Max-Heap): Hodnota každého uzla je väčšia alebo rovná hodnotám jeho detí. Koreň je najväčší prvok.
  2. Podľa úplnosti stromu:

    • Kompletná binárna hromáda (Complete Binary Heap): Všetky úrovne, okrem možno poslednej, sú úplne zaplnené a uzly na poslednej úrovni sú usporiadané čo najviac vľavo. Táto vlastnosť je dôležitá, pretože umožňuje efektívne uloženie hromády v poli.
    // Príklad štruktúry pre uzol hromády (na demonštráciu konceptu)
    public class HeapNode<T>
    {
        public T Value { get; set; }
        // Odkazy na detské uzly nie sú vždy explicitné v reprezentácii v poli
        public HeapNode<T> Left { get; set; }
        public HeapNode<T> Right { get; set; }
    }
    

Hoci existujú aj iné typy hromád, ako Fibonacci hromáda (pre pokročilé algoritmy) alebo binomická hromáda, vo väčšine prípadov sa "hromáda" odkazuje na úplnú binárnu min- alebo max-hromádu, kvôli ich širokému využitiu v triediacich algoritmoch (napríklad Heapsort) a prioritných frontoch.