Calculadora de índices hijos de un montículo binario
Un montículo binario almacena un árbol dentro de un arreglo plano, por lo que navegar desde un nodo padre exige un cálculo de índices pequeño pero importante.
Ejecutar — gratis
Esta calculadora devuelve las posiciones exactas de los hijos izquierdo y derecho del nodo indicado. Puede elegir la indexación desde cero, habitual en los lenguajes de programación, o desde uno, frecuente en libros y pseudocódigo. El resultado es determinista, inmediato y se valida para impedir raíces no válidas o cálculos fuera del rango de enteros seguros de JavaScript.
Elija el sistema de indexación antes de aplicar la fórmula
Los montículos binarios conservan la misma estructura de árbol con independencia de cómo se numere el arreglo, pero las fórmulas de los hijos dependen del punto de inicio. Con indexación desde cero, la raíz ocupa el índice 0. Por tanto, el hijo izquierdo de un nodo situado en i está en 2i + 1 y el derecho, en 2i + 2. Con indexación desde uno, la raíz ocupa el índice 1, de modo que las fórmulas pasan a ser 2i para el hijo izquierdo y 2i + 1 para el derecho. Seleccione el sistema que utilice el arreglo o algoritmo que está examinando; cambiar de sistema sin modificar el índice del nodo señala una posición física diferente. La calculadora repite el sistema elegido y el índice original junto con ambos resultados para que la interpretación sea inequívoca. Esto resulta especialmente útil al comparar código fuente con un libro, pues muchos lenguajes emplean arreglos desde cero, mientras que las explicaciones didácticas pueden reservar la posición 0 y comenzar el montículo en la posición 1. Confirmar primero la convención evita un resultado desfasado en una unidad que, por lo demás, parecería correcto.
Introduzca un índice válido y consulte ambas posiciones hijas
Indique la posición entera del nodo padre y seleccione el sistema de indexación del arreglo. En un montículo indexado desde cero, el índice puede ser 0 o cualquier entero seguro superior. En uno indexado desde uno, debe ser como mínimo 1, porque la posición 0 queda fuera de esa convención. La respuesta incluye left_child_index y right_child_index como enteros que puede emplear directamente para inspeccionar un arreglo, construir un recorrido o comprobar una implementación. Esos valores son posiciones estructurales, no una confirmación de que haya elementos en ellas. Un montículo con menos elementos puede carecer de ambos hijos o contener únicamente el hijo izquierdo al final del arreglo. Compare cada índice devuelto con la longitud del arreglo antes de acceder a él mediante código. Con indexación desde cero, el hijo solo existe si su índice es menor que la longitud del arreglo. Con indexación desde uno, el límite correcto depende de si la posición 0 está reservada físicamente; compárelo con la representación concreta de su programa. Esta separación mantiene el cálculo preciso sin presuponer el tamaño del montículo.
Utilice el resultado para probar y depurar operaciones de montículo
Los índices de los hijos son esenciales en el descenso, la construcción del montículo, la extracción de una cola de prioridad y la visualización del árbol. Durante el descenso, una implementación calcula ambas posiciones, comprueba qué hijos existen, compara las prioridades almacenadas e intercambia el padre con el hijo adecuado cuando se incumple la propiedad del montículo. Una convención incorrecta puede omitir el verdadero hijo izquierdo, leer fuera del arreglo o comparar elementos no relacionados, aunque el código siga pareciendo matemáticamente razonable. Esta calculadora ofrece una comprobación independiente y rápida para ejemplos, pruebas unitarias, ejercicios técnicos y revisiones de código. Pruebe la raíz, un nodo interno y otro cercano al final del montículo para cubrir los casos más reveladores. El cálculo solo admite enteros seguros y rechaza resultados que excedan el rango entero exacto, por lo que evita índices redondeados silenciosamente ante entradas desmesuradas. No realiza solicitudes de red ni utiliza valores aleatorios o dependientes de la hora. El cálculo del navegador y el controlador de la API comparten la misma función pura, así que una entrada idéntica produce la misma salida en ambos entornos por $0.002 en cada solicitud de API.
Qué puede hacer con ella
Depurar una operación de descenso
Compruebe que una cola de prioridad examina las dos posiciones correctas del arreglo después de extraer la raíz.
Convertir fórmulas de un libro en código
Compare pseudocódigo indexado desde uno con un lenguaje indexado desde cero sin introducir un error de una posición.
Preparar casos de prueba para montículos
Genere posiciones hijas esperadas para raíces, nodos internos y casos límite en pruebas deterministas.
Preguntas frecuentes
¿Qué fórmulas se utilizan con indexación desde cero?
Para un nodo situado en i, el hijo izquierdo está en 2i + 1 y el derecho, en 2i + 2.
¿Qué fórmulas se utilizan con indexación desde uno?
Para un nodo situado en i, el hijo izquierdo está en 2i y el derecho, en 2i + 1.
¿Un índice devuelto garantiza que el hijo existe?
No. El resultado indica posiciones estructurales. Compare cada posición con los límites reales del arreglo antes de leer un elemento.
¿Por qué el índice cero no es válido en el modo desde uno?
Un montículo indexado desde uno sitúa su raíz en la posición 1, por lo que la posición 0 no representa ningún nodo en ese sistema.
¿Cuánto cuesta el cálculo mediante API?
Cada solicitud de API cuesta $0.002. También puede ejecutar el mismo cálculo determinista en el navegador.
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-children-index \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"node_index":5}'const res = await fetch("https://api.kit.forhosting.com/dev/heap-children-index", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"node_index": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/heap-children-index",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"node_index": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/heap-children-index", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"node_index":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"node_index":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/heap-children-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
{
"node_index": 5
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.heap_children_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. |