Elternindex im binären Heap
Geben Sie den Index eines Knotens ein und wählen Sie die Zählweise: In einem Heap ab 0 liegt der Elternknoten von Index 5 bei 2, denn 4 durch 2 abgerundet ist 2. Die Wurzel hat keinen Elternknoten und wird abgelehnt, statt einen erfundenen Platz zu bekommen. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Index
- 5
- Indizierung
- Zero
- Elternknoten
- 2
- Wurzel
- 0
Ein in einem Array abgelegter binärer Heap trägt Prioritätswarteschlangen, Heapsort und viele Kürzeste-Wege-Umsetzungen. Jedes Lehrbuch nennt eine Elternformel, doch die beiden Nummerierungskonventionen weichen um eins ab, und ein Versatz um eins zerstört still das Sift-up. Dieser Elternindex-Rechner nimmt den Arrayindex eines Knotens und die Nummerierung entgegen — nullbasiert mit Wurzel am Index null, oder einsbasiert mit Wurzel am Index eins — und liefert den Elternknoten über die passende geschlossene Form. Nullbasierte Heaps setzen Eltern gleich dem Abrunden von Index minus eins durch zwei. Einsbasierte Heaps setzen Eltern gleich dem Abrunden von Index durch zwei. Die Wurzel hat keinen Elternknoten und wird zurückgewiesen, statt einen negativen oder Scheinplatz zu erfinden.
Elternformeln bei nullbasierter und einsbasierter Nummerierung
Ein im Array ausgelegter binärer Heap speichert niemals Zeiger auf Eltern oder Kinder. Der Weg von einem Knoten zu seinem Elternknoten ist eine geschlossene Indexformel, und diese Formel hängt davon ab, ob das Array bei null oder bei eins zählt.
In der nullbasierten Konvention, die C, Java, JavaScript, Python und die meisten Produktionsheaps nutzen, sitzt die Wurzel am Index null, die Kinder von Knoten i stehen bei zwei i plus eins und zwei i plus zwei, und der Elternknoten eines Nicht-Wurzelknotens ist das Abrunden von i minus eins geteilt durch zwei.
In der einsbasierten Konvention vieler Lehrbücher, von CLRS-artigem Pseudocode und mancher Wettbewerbsschablone sitzt die Wurzel am Index eins, die Kinder stehen bei zwei i und zwei i plus eins, und der Elternknoten ist einfach das Abrunden von i geteilt durch zwei. Beide Identitäten sind für ganzzahlige Indizes exakt; sie sind weder Näherungen noch austauschbar. Dieser Rechner wendet die passende Identität an, nachdem Sie die Konvention gewählt haben, und weist die Wurzel zurück, weil die Wurzel keinen Elternknoten hat.
Die beiden Konventionen zu verwechseln ist der klassische Versatz um eins: ein Sprach-Array wie einsbasiert oder ein Lehrbuchdiagramm wie nullbasiert zu behandeln liefert einen Elternknoten einen Platz neben der Wahrheit und zerbricht still Sift-up sowie Decrease-key.
Eingabevertrag, Antwortform und Fehlerverhalten
Steht indexing auf zero, muss der Index mindestens null sein; steht indexing auf one, muss der Index mindestens eins sein. Die Wurzel der gewählten Konvention — null in einem nullbasierten Heap, eins in einem einsbasierten Heap — wird mit einer Meldung zurückgewiesen, die diese Wurzel nennt, denn einen Elternknoten bei minus eins zu erfinden oder auf den letzten Platz zu wickeln wäre eine Lüge. Beispiel: Index fünf mit der standardmäßigen nullbasierten Konvention liefert Eltern zwei, weil das Abrunden von vier durch zwei zwei ergibt.
Beispiel: Index vier mit einsbasierter Nummerierung liefert Eltern zwei, während dieselbe Vier in einem nullbasierten Heap Eltern eins hätte — dieses Paar ist der ganze Grund, warum die Konvention ein Feld ist. Gescheiterte Prüfung wird nicht berechnet.
Wo ein Elternindex-Rechner seinen Nutzen zeigt
Interviewvorbereitung, Algorithmuskurse und produktive Prioritätswarteschlangen brauchen denselben Aufstieg zum Elternknoten und widersprechen sich bei der Nummerierung. Wer eine Sift-up-Spur prüft, will bestätigen, dass der Elternknoten von fünf in einem Sprach-Array zwei ist und der Elternknoten von vier auf einem einsbasierten Blatt zwei ist, ohne die Formel in jedem Schritt von Hand umzudrehen. Autobewerter für Strukturhausaufgaben brauchen ein deterministisches Orakel, das die Wurzel als elternlos zurückweist, statt ein stilles Minus-eins zurückzugeben, das eine fehlerhafte Abgabe als Erfolg werten könnte.
Wer einen Lehrbuchheap in eine nullbasierte Sprache überträgt, oder umgekehrt, kann beide Konventionen in Tests festnageln und den Versatz um eins vor der Auslieferung fangen. Visualisierer und Wettbewerbgerüste, die den Baum aus einem Array zeichnen, können den Elternknoten jedes Nicht-Wurzelplatzes erfragen und Kanten legen, ohne zwei Kopien der Formel einzubetten. Halten Sie Anfragen klein, nageln Sie die Elternganzzahl in Tests fest, und Sie erhalten wiederholbare Aufstiege für Hausaufgaben, LMS-Erweiterungen und Rand-Worker, ohne eine eigene Heap-Bibliothek aufzubauen.
Anwendungsfälle
Hausaufgaben- und Interviewspuren
Prüfen Sie den Elternknoten jedes Arrayplatzes beim Nachzeichnen von Sift-up oder Heapsort und wechseln Sie zwischen einsbasierter Lehrbuchzählung und nullbasierten Sprach-Arrays.
Autobewerter und Wettbewerbsorakel
Bewerten Sie Heap-Indexfragen mit einer deterministischen Elternformel, die die Wurzel als elternlos zurückweist, statt einen Scheinindex zu erfinden.
Heaps zwischen Konventionen übertragen
Nageln Sie Elternaufstiege fest, wenn Sie einsbasierten CLRS-Pseudocode in ein nullbasiertes Sprach-Array übersetzen, oder umgekehrt, bevor der Versatz um eins ausgeliefert wird.
Häufige Fragen
Wie findet man den Elternknoten eines Knotens in einem binären Heap-Array?
Bei nullbasierten Heaps ist der Elternknoten floor((index − 1) / 2). Bei einsbasierten Heaps ist der Elternknoten floor(index / 2).
Worin unterscheiden sich nullbasierte und einsbasierte Heap-Nummerierung?
Nullbasierte Heaps setzen die Wurzel auf Index 0 und nutzen parent = floor((i − 1) / 2). Einsbasierte Heaps setzen die Wurzel auf Index 1 und nutzen parent = floor(i / 2). Derselbe Zahlenwert kann unter den beiden Konventionen verschiedene Eltern nennen.
Was geschieht, wenn der Elternknoten der Wurzel verlangt wird?
Die Wurzel (Index 0, wenn indexing zero ist, Index 1, wenn indexing one ist) hat keinen Elternknoten, und der Rechner erfindet keinen.
Welchen Elternknoten hat Index 5 in einem nullbasierten binären Heap?
Zwei. floor((5 − 1) / 2) = 2. Derselbe Index in einem einsbasierten Heap ist ebenfalls 2, aber die 4 ist das Paar, das auseinanderläuft: Eltern 1 bei Nullbasis, Eltern 2 bei Einsbasis.
Warum ist ein Fehler um eins in der Elternformel so tückisch?
Weil das Ergebnis ein echter Platz direkt neben dem richtigen Elternknoten ist, also stürzt nichts ab: Das Aufsteigen eines Elements und das Senken einer Priorität vergleichen und tauschen die falschen Elemente, und die Heap-Ordnung zerbricht unbemerkt.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/dev/heap-parent-index \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"index":5}'const res = await fetch("https://api.kit.forhosting.com/dev/heap-parent-index", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"index": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/heap-parent-index",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"index": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/heap-parent-index", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"index":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"index":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/heap-parent-index", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"index": 5
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.heap_parent_index",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Elternformeln bei nullbasierter und einsbasierter Nummerierung
Die Antwort spiegelt den gesendeten Index und die Konvention, nennt den Elternknoten, nennt den Wurzelindex dieser Konvention, wiederholt die Formel als Zeichenkette zum Drucken neben der Antwort und setzt is_root bei jedem erfolgreichen Aufstieg auf false, damit Auftraggeber den Erfolg als «ein echter Elternknoten existiert» lesen können.
Eingabevertrag, Antwortform und Fehlerverhalten
Senden Sie per POST einen JSON-Körper mit Pflichtfeld index: eine endliche Ganzzahl, die den Arrayplatz des Knotens nennt, dessen Elternknoten Sie wollen. indexing ist wahlfrei und steht standardmäßig auf zero, also einem nullbasierten Array mit Wurzel am Index null; senden Sie one, wenn Ihr Heap bei eins zählt. Die Aliase i und node gelten für index, convention gilt für indexing, sodass aus Vorlesungsnotizen kopierte Schnipsel weiterhin gelesen werden. Nicht endliche Werte, Wahrheitswerte, leere Zeichenketten und ein fehlendes index scheitern mit invalid_input. Indizes oberhalb der sicheren Ganzzahlgrenze werden zurückgewiesen, damit JSON-Zahlen unter der Abrundungsteilung exakt bleiben. Bei Erfolg enthält der Körper das wiederholte index und indexing, parent als berechnete Ganzzahl, is_root false, root als Wurzelplatz der Konvention und formula als Eltern gleich Abrunden von Klammer Index minus eins zu über zwei, oder Eltern gleich Abrunden von Index über zwei.
Wo ein Elternindex-Rechner seinen Nutzen zeigt
Weil dies Parse-Stufe A ist, kostet jeder erfolgreiche Aufruf den veröffentlichten Grundpreis $0.002 ohne Modell-Token und ohne ausgehendes Netz, und ungültige Eingabe wird nicht berechnet.
Technische Fragen
Was kostet der Elternindex-Rechner für binäre Heaps?
Das Browserwerkzeug ist kostenlos. API-Anfragen nutzen vorausbezahltes KIT-Guthaben zu $0.002 je erfolgreichem Aufruf; ungültige Eingabe wird nicht berechnet.