Hay un proceso de dos pasos para aprender cualquier algoritmo o estructura de datos.
- Estudie de alguna buena fuente y comprenda lo suficientemente bien.
- Resuelva problemas basados en él para comprobar su comprensión y confiar en él.
Si no puede resolver los problemas, debe repetir el paso 1 nuevamente.
Como la pregunta es solo sobre árboles, déjame darte algunos recursos muy buenos para aprender (es decir, el paso 1)
- ¿Hay algún proceso o conjunto de preguntas que uno debería hacer al resolver problemas tácticos de ajedrez?
- ¿Cómo se siente cuando te das cuenta de que no eres realmente bueno en programación y algoritmos?
- ¿Qué algoritmos y estructuras de datos se utilizan más en problemas del mundo real y software de producción?
- Cómo reducir la programación dinámica a programación lineal
- ¿Cómo podemos encontrar la aparición de una cadena dada (la secuencia no importa) en una secuencia dada en Java?
Árbol normal y binario:
- Árboles Archives – GeeksforGeeks
Árbol de búsqueda binaria:
- Una introducción a la búsqueda binaria y los árboles rojo-negros
Árbol indexado binario:
Árboles + DP:
- Tutorial de DP on Trees – Codeforces
- Programación dinámica en árboles Tutorial de Lalit Kundu en Threads @ IIIT Hyderabad
Árbol de segmento:
- MAXimal :: algo :: Дерево отрезков (Traducirlo al inglés)
Árbol de segmentos + propagación perezosa:
Estas fueron algunas de las cosas que aprendí recientemente. Hay otros miles de tutoriales en varias secciones de árboles, encuéntrelos y apréndalos.
El segundo paso consiste en practicar las mismas habilidades, es decir, resolver problemas basados en estos. Aquí hay algunos archivos de problemas:
- Resolver desafíos de código de estructuras de datos (problemas relacionados con árboles normales)
- A2 Juez en línea (problemas relacionados con árboles normales)
- A2 Juez en línea (problemas basados en el árbol de segmentos)
- A2 Juez en línea (problemas basados en árbol indexado binario)
¡Todo lo mejor! 🙂