Índice padre de un heap binario
En un montículo numerado desde 0, el índice 5 tiene su padre en el 2, porque la parte entera de 4 entre 2 es 2. La raíz no tiene padre y se rechaza en lugar de inventarle una casilla. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Índice
- 5
- Indexación
- Zero
- Padre
- 2
- Raíz
- 0
Un heap binario guardado en un arreglo es la estructura que sostiene las colas de prioridad, el heapsort y muchas implementaciones de camino más corto. Todo manual enumera una fórmula del padre, pero las dos convenciones de indexación discrepan en una unidad, y un desfase de uno corrompe en silencio el sift-up. Esta calculadora del índice del padre acepta el índice de arreglo de un nodo y la convención de numeración — basada en cero, con la raíz en el índice cero, o basada en uno, con la raíz en el índice uno — y devuelve el padre con la forma cerrada que corresponde. Los heaps basados en cero usan padre igual al piso de índice menos uno entre dos. Los heaps basados en uno usan padre igual al piso de índice entre dos. La raíz no tiene padre y se rechaza en lugar de inventar una ranura negativa o ficticia.
Fórmulas del padre con indexación desde cero y desde uno
Un heap binario dispuesto en un arreglo jamás almacena punteros al padre ni a los hijos. El recorrido desde un nodo hasta su padre es una fórmula de índice en forma cerrada, y esa fórmula depende de si el arreglo se numera desde cero o desde uno.
En la convención basada en cero que usan C, Java, JavaScript, Python y la mayoría de heaps de producción, la raíz ocupa el índice cero, los hijos del nodo i quedan en dos i más uno y dos i más dos, y el padre de un nodo que no es raíz es el piso de i menos uno dividido entre dos.
En la convención basada en uno que usan muchos manuales, el seudocódigo al estilo CLRS y algunas plantillas de concurso, la raíz ocupa el índice uno, los hijos quedan en dos i y dos i más uno, y el padre es sencillamente el piso de i dividido entre dos. Ambas identidades son exactas para índices enteros; no son aproximaciones ni son intercambiables. Esta calculadora aplica la identidad que corresponde después de que usted elija la convención, y rechaza la raíz porque la raíz no tiene padre.
Confundir las dos convenciones es el clásico error de uno: tratar un arreglo de lenguaje como si partiera de uno, o un diagrama de libro como si partiera de cero, produce un padre a una ranura de la verdad y rompe en silencio el sift-up y el decrease-key.
Contrato de entrada, forma de la respuesta y errores
Cuando indexing es zero el índice debe ser al menos cero; cuando indexing es one el índice debe ser al menos uno. La raíz de la convención elegida — cero en un heap basado en cero, uno en un heap basado en uno — se rechaza con un mensaje que nombra esa raíz, porque inventar un padre en menos uno o envolver hasta la última ranura sería mentir.
Ejemplo: índice cinco con la convención basada en cero por omisión produce padre dos, porque el piso de cuatro entre dos es dos. Ejemplo: índice cuatro con indexación basada en uno produce padre dos, mientras que el mismo cuatro en un heap basado en cero tendría padre uno — ese par es toda la razón de que la convención sea un campo. La validación fallida no se factura.
Dónde aporta valor una calculadora del índice del padre
La preparación de entrevistas, los cursos de algoritmos y las colas de prioridad de producción necesitan el mismo recorrido hacia el padre, y discrepan en la numeración. Quien revisa un trazo de sift-up quiere confirmar que el padre de cinco es dos en un arreglo de lenguaje y que el padre de cuatro es dos en una hoja basada en uno, sin invertir la fórmula a mano en cada paso.
Los calificadores automáticos de deberes de estructuras necesitan un oráculo determinista que rechace la raíz por no tener padre, en lugar de devolver un menos uno silencioso que un envío defectuoso podría tratar como acierto. Quien porta un heap de libro a un lenguaje basado en cero, o al revés, puede fijar ambas convenciones en las pruebas y cazar el desfase de uno antes de publicar.
Los visualizadores y andamiajes de concurso que dibujan el árbol desde un arreglo pueden pedir el padre de cada ranura que no es raíz y trazar aristas sin incrustar dos copias de la fórmula. Mantenga las peticiones modestas, fije el entero padre en las pruebas y obtendrá recorridos reproducibles para deberes, complementos LMS y workers en el borde sin montar una biblioteca local de heaps.
Qué puede hacer con ella
Trazos de deberes y entrevistas
Compruebe el padre de cualquier ranura del arreglo al trazar sift-up o heapsort, alternando la numeración de libro basada en uno y los arreglos de lenguaje basados en cero.
Calificadores y oráculos de concurso
Puntúe preguntas de índices de heap con una fórmula determinista del padre que rechaza la raíz por no tener padre, en lugar de inventar un índice ficticio.
Portar heaps entre convenciones
Fije los recorridos al padre al traducir seudocódigo CLRS basado en uno a un arreglo de lenguaje basado en cero, o al revés, antes de que el desfase de uno se publique.
Preguntas frecuentes
¿Cómo se obtiene el padre de un nodo en un arreglo de heap binario?
En heaps basados en cero el padre es floor((index − 1) / 2). En heaps basados en uno el padre es floor(index / 2).
¿En qué se diferencian la indexación desde cero y desde uno en un heap?
Los heaps basados en cero ponen la raíz en el índice 0 y usan parent = floor((i − 1) / 2). Los basados en uno ponen la raíz en el índice 1 y usan parent = floor(i / 2). El mismo número puede nombrar padres distintos según la convención.
¿Qué ocurre si se pide el padre de la raíz?
La raíz (índice 0 si indexing es zero, índice 1 si indexing es one) no tiene padre, y la calculadora no inventará uno.
¿Cuál es el padre del índice 5 en un heap binario basado en cero?
Dos. floor((5 − 1) / 2) = 2. Ese mismo índice en un heap basado en uno también es 2, pero el 4 es el par que diverge: padre 1 si es basado en cero, padre 2 si es basado en uno.
¿Por qué importa tanto un error de uno en la fórmula del padre?
Porque el resultado es una casilla real situada a un puesto del padre verdadero, así que nada falla a la vista: la subida de elementos y la reducción de prioridad comparan e intercambian los elementos equivocados, y el orden del montículo se rompe en silencio.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su 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)Ejemplo de solicitud
{
"index": 5
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.heap_parent_index",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Fórmulas del padre con indexación desde cero y desde uno
La respuesta repite el índice y la convención que usted envió, nombra el padre, nombra el índice de la raíz de esa convención, reescribe la fórmula como cadena que puede imprimir junto a la respuesta, y deja is_root en false en cada recorrido exitoso para que los clientes traten el éxito como «existe un padre real».
Contrato de entrada, forma de la respuesta y errores
Envíe por POST un cuerpo JSON con index obligatorio: un entero finito que nombra la ranura del arreglo del nodo cuyo padre desea. indexing es opcional y vale zero por omisión, es decir un arreglo basado en cero con la raíz en el índice cero; envíe one cuando su heap se numera desde uno. Se aceptan los alias i y node para index, y convention para indexing, de modo que los fragmentos copiados de apuntes de clase siguen analizándose. Valores no finitos, booleanos, cadenas vacías y un index ausente fallan con invalid_input. Los índices por encima del límite de entero seguro se rechazan para que los números JSON sigan exactos bajo la división piso. En caso de éxito el cuerpo incluye el index y el indexing repetidos, parent como el entero calculado, is_root en false, root como la ranura raíz de la convención, y formula como padre igual al piso de paréntesis índice menos uno cierre entre dos, o padre igual al piso de índice entre dos.
Dónde aporta valor una calculadora del índice del padre
Como esto es parse de nivel A, cada llamada exitosa cuesta el precio base publicado $0.002 sin tokens de modelo ni red saliente, y la entrada inválida no consume saldo.
Preguntas técnicas
¿Cuánto cuesta la calculadora del índice del padre en un heap binario?
La herramienta del navegador es gratuita. Las peticiones API usan saldo prepago KIT a $0.002 por llamada exitosa; la entrada inválida no se factura.