Eesmärk Kuhjad on mõeldud puhuks, kui ühtedeks põhioperatsioonidest on suu- rima (või vähima) võtmega kirje leidmine ja eemaldamine. Lisaks neile peab olema võimalik odavalt sooritada kirjete lisamist. Sobivad seega eelistusjärjekorra realiseerimiseks. 1 Kahendkuhjad 5 Kahendkuhjad 1 Kahendkuhjad 6 Invariant Kahendkuhja (ingl binary heap) puhul nõutakse kuhjatingimust ja et tegu oleks kompaktse kahendpuuga. 1 Kahendkuhjad 7 Kuhjatingimuse rekurrentne määratlus Kahendpuu rahuldab kuhjatingimust, kui kas ta on tühi või juure kirje võti on maksimaalne üle kogu puu (pöördkuhja puhul minimaalne), ja mõlemad harud rahuldavad kuhjatingimust. 1 Kahendkuhjad 8
jaoks Selline kahendpuud, kus peaksid olemad täidetud järgmised tingimused: 1. Igas tipus olev väärtus ei tohi olla väiksem kui selle tipu järglastel 2. Lehtede sügavus ei tohi erineda rohkem kui 1 taseme võrra 3. Viimane tase täitub vasakult paremale • Andmestruktuur on tavaliselt realiseeritud massiivina ja puu juur on element indeksiga 1, edasi tulevad juure järglased 2 ja 3 jne • Kahendkuhja kasutatakse ka prioriteetidega järjekorra realiseerimiseks. • Sel juhul paikneb kõrgeima prioriteediga element kuhja tipus (massiivi 1. lahtris) ja peale tema eemaldamist tuleb kuhi ringi ehitada 11. Sorteerimisülesanne. Sorteermine kuhjaga (Heaps.), lisamissorteerimine (Insertion s.), mestimisega sorteerimine (Merge s.), loendamissorteerimine (Counting s.). Meetodite keerukus, tugevad ja nõrgad küljed. Mõtle ka näitele algoritmi töö selgitamiseks. 11