V1#

Punto 1: Representación de la Estructura de Bogotá con un Árbol Binario#

El área de recursos humanos de la empresa Mi Bienestar organizo un evento de adivinar una localidad de Bogotá haciendo preguntas. Uno de los integrantes del equipo técnico escucho está petición y pensó en almacenar las localidades en un árbol por la lógica como se ingresan los datos. Cada nodo del árbol representará una localidad, y las relaciones estarán organizadas jerárquicamente según el nivel de ingreso o la conexión entre ellos. La raíz del árbol será Bogotá y sus localidades estarán distribuidos en el resto de los nodos.

Requerimientos#

1. Estructura del Árbol#

  • El nodo raíz debe representar la ciudad: «Bogotá».

  • Cada nodo hijo representará una localidad (ejemplo: «Chapinero», «Suba», «Usaquén»).

Cada nodo debe almacenar la siguiente información:

  • Nombre: Localidad.

  • Alcalde: Nombre del alcalde de la localidad.

  • Población estimada: Un número coherente con la cantidad de gente en Bogotá (aprox. 8M), no es necesario que sea preciso.

Nota: Utiliza una clase para almacenar estos datos, no strings simples.

2. Localidades#

  1. Tintalito

  2. San Cristóbal

  3. Cedritos

  4. La Estrada

  5. Quirigua

  6. Bavaria

  7. Fontibón

  8. Usaquén

  9. Chapinero

  10. Villaluz

  11. Lourdes

  12. Normandía

3. Operaciones a Implementar#

  • Agregar nodos: Permite añadir localidades, barrios o subniveles al árbol.

  • Recorridos: Recorrer el árbol pre-order, in-order, y post-order.

  • Contar divisiones: Devuelve el número total de divisiones (nodos) en el árbol.

  • Zona más poblada: Encuentra el nodo con la mayor población estimada. Esto se puede hacer iterando sobre el árbol y guardando temporalmente el dato con más población.

4. Escenario de ejemplo#

El nodo raíz es «Bogotá». Los nodos siguientes son los de la sección Localidades ingresados en el mismo orden que están ingresados.

5. Entrega esperada#

  • Código funcional en Java: Implementación completa del árbol N-Ario y las operaciones descritas.

  • Diagramas o imágenes: Representación visual del árbol, mostrando al menos tres niveles (ciudad, localidades y barrios).

Solución#

// Agregar código aquí

Punto 2: Modelar el Sistema de Transmilenio con un Grafo#

Un turista quiere conocer los portales principales de Bogotá, pero conoce poco y no sabe por cual empezar. Uno de los estudiantes de estructura de datos le sugirió que podría utilizar un grafo para encontrar el camino en el cual recorre algunos portales seleccionados tan solo una vez. Implementa un grafo donde cada estación será un nodo, y cada conexión directa entre estaciones será una arista.

Requerimientos#

1. Estructura del Grafo#

  • Cada nodo representa una estación del sistema de Transmilenio.

  • Cada arista representa una conexión directa entre dos estaciones.

  • El grafo será no ponderado, ya que no se tendrán en cuenta tiempos o distancias.

Nota: Utiliza una clase para almacenar estos datos, no strings simples.

2. Operaciones a Implementar:#

  • Recorrer: Viajar por el grafo de forma BFS y DFS.

  • Agregar estación: Añade un nuevo nodo al grafo.

  • Conectar estaciones: Crea una arista entre dos nodos existentes.

  • Buscar ruta: Encuentra la ruta entre la raíz y una estación dad (por ejemplo, de «Portal Suba» a «Av. Jiménez»).

  • Listar conexiones: Dada una estación, muestra todas las estaciones directamente conectadas (vecinos).

3. Escenario de ejemplo#

Considera las siguientes estaciones y conexiones:

Para conocer el número del vértice basta contar click en el y ver el texto asociado.

4. Entrega esperada#

  • Código funcional en Java: Implementación completa del grafo y las operaciones descritas.

  • Diagramas o imágenes: Representación visual del grafo, destacando nodos y conexiones.

Solución#

// Agregar código aquí