2017-01-03 12 views
0

Ich habe hier den Code aus Skiena Anleitung:K-ten kleinstes Element größer oder gleich x in einem min Haufen

int heap_compare(priority_queue *q, int i, int count, int x) 
{ 
    if ((count <= 0) || (i > q->n)) return(count); 

    if (q->q[i] < x) { 
    count = heap_compare(q, pq_young_child(i), count-1, x); 
    count = heap_compare(q, pq_young_child(i)+1, count, x); 
    } 

    return(count); 
} 

Ich verstehe nicht, warum die Zählung nicht für das rechte Kind dekrementiert werden des Knotens?

+0

Weder Datenstruktur noch die Frage ist nicht klar. Was ist das ursprüngliche Problem, das dieser Code versucht zu lösen? Welche Datenstruktur wird im Code verwendet? Die Frage sollte in sich geschlossen sein. Z.B. pq_young_child !? –

Antwort

0

Die Anzahl verringert sich nicht, wenn Sie in Richtung des rechten Teilbaums gehen, wird der aktuelle Knoten als eines der kleineren Elemente "k-1" gezählt und wenn wir uns nach links bewegen, ist der aktuelle Knoten nicht in "k "kleinste Elemente.

Verwandte Themen