Bueno, esto es lo que hice: leer la sección en mi texto de Algoritmos y Estructuras de Datos e intentar obtener una idea general. (Si actualmente no está estudiando, mire a su alrededor y encuentre un texto de estructuras de datos y algoritmos gratuitos que le guste, hay montones de otros gratuitos que cubrirán el material)
Luego dibujé una representación pictórica de tal árbol y el proceso de agregarle nuevos niños, mientras me refería tanto a mi libro de texto como a las descripciones en línea que pude encontrar que parecían tener sentido.
Hice un diagrama para cada una de las posibilidades cuando agregué un nuevo hijo al árbol (es decir, o bien el nuevo hijo se puede unir al árbol, o hacer el archivo adjunto requiere que el árbol se reequilibre. Si se reequilibra, hay un par de diferentes direcciones en las que podría ser necesario realizar la ‘rotación’.
- ¿Qué son los algoritmos? ¿Cómo trabajan?
- ¿Hay alguna estructura de datos que pueda realizar las funciones de inserción, búsqueda y eliminación en O (log n)?
- ¿Qué plataforma / herramienta / idioma debería ser bueno para la minería de texto?
- Se me pide que lea datos de un archivo .txt en una matriz y que haga cosas con esa información (encontrar promedio, encontrar número de elementos, encontrar valores máximos / mínimos). ¿Cómo se puede hacer esto en Java?
- ¿Qué es el retroceso en algoritmos?
Tener una representación gráfica de cada uno de los pasos involucrados hizo que traducir esos pasos en código fuera mucho más fácil. (Para mis propósitos, realmente solo necesitaba agregar nodos al árbol, o buscar si ya existía un nodo en el árbol; para una comprensión más completa, también querrá hacer un diagrama de otras operaciones como eliminar o atravesar el árbol para producir una lista ordenada de nodos).
Para un enfoque un poco menos laborioso, puede consultar un visualizador AVL como este:
AVL Tree Visualzation
Eso le permite agregar, buscar y eliminar nodos en un árbol AVL y mostrará una visualización de lo que ocurre en cada una de estas instancias.