En una representación de matriz binaria de árbol / montón, si usamos un índice basado en 1, tenemos para el nodo i
- [matemáticas] left \ _child_i = 2i [/ matemáticas]
- [matemáticas] right \ _child_i = 2i + 1 [/ matemáticas]
- [matemáticas] parent_i = \ lfloor \ frac {i} {2} \ rfloor [/ math]
En los índices basados en 0, tenemos un mapeo de que el nodo i corresponde al nodo i + 1 en el índice basado en 1. Entonces, obtenemos
- [matemáticas] left \ _child_i = (2i) + 1 = 2i + 1 [/ matemáticas]
- [matemáticas] right \ _child_i = (2i + 1) + 1 = 2i + 2 [/ matemáticas]
- [matemáticas] parent_i = \ lfloor \ frac {i-1} {2} \ rfloor [/ math]
Tenga en cuenta que si bien el uso de índices basados en 0 ahorra 1 ranura de memoria, hace que la implementación sea un poco más compleja. En los índices basados en 1, el padre de 1 es 0 y sabemos que 0 no es un nodo válido. En los índices basados en 0, el padre de 0 es 0, por lo que debemos tratarlo como un caso especial.
- ¿Qué es la matemática profanada y dónde se usa?
- ¿Es Python el mejor lenguaje de programación para las matemáticas aplicadas?
- ¿Cómo convertiría un número binario en un número decimal en la menor complejidad de tiempo?
- ¿Por qué los maestros programadores insisten en usar las matemáticas para enseñar a sus estudiantes los conceptos básicos de la programación dado que no se usa tanto a diario?
- ¿Necesito ser bueno en matemáticas para hacer una programación competitiva?