En primer lugar, este tema es un gran océano. No soy un experto, solo una persona que aprende este tipo de cosas por diversión.
La mejor manera es comenzar con un árbol binario y le sugiero que haga algunas implementaciones estáticas como esta
#definir izquierda (n) 2 * n
# definir derecha (n) 2 * n + 1
int a [64]; // árbol de 5 capas
- ¿Cuál es el equivalente binario de -2?
- ¿Cómo 'entiende' el hardware de la computadora los dígitos binarios?
- ¿Cuál es el número esperado de pasos necesarios para que una entidad sin memoria atraviese un gráfico completo de 4 nodos?
- ¿Cuál de los enfoques (conexionismo, evolutivo, bayesiano, etc.) tendrá la mejor oportunidad de desarrollar un algoritmo maestro de IA?
- ¿Cómo puedes visualizar algoritmos?
A pesar de que es un poco desperdicio de memoria, el recorrido y otras operaciones serán más simples, ya que cometerá muchos errores y en las implementaciones dinámicas también habrá mucho (SIGSEGV) para tratar.
Entonces, probablemente, vaya por cosas un poco complejas como árbol de segmentos, árbol de fenwick, árbol 2-3.
Si aún le queda cordura, vaya a la descomposición de luz pesada y otras cosas (no ha llegado tan lejos, pero seguramente lo hará en el futuro)
CodeChef ayuda mucho , pero solo si tiene la paciencia para encontrar el problema adecuado y pasa la mayor parte de su tiempo viendo la pantalla de respuesta incorrecta