Skip to content

Conversation

@benjabrezzo
Copy link
Contributor

Esta PR incorpora la implementación de la clase DecisionTree, un árbol binario para modelar la toma de decisones de los NPC's mercader con el jugador.
Funcionalidades implementadas:

  • Constructor y Destructor: Inicializa el árbol con raíz nula, y el destructor libera la memoria mediante un recorrido postorden.
  • Inserción (insertar): Inserta nodos manteniendo el orden lexicográfico.
  • Búsqueda (buscar): Recorre el árbol para encontrar si una decisión existe. Está el llamado público, y un método privado que implementa recursion.
  • Eliminación (eliminar): Elimina la decisión indicada del árbol, y lo re-organiza correctamente según los tres casos de nodo sin hijos, nodo con un hijo y nodo con dos hijos (se reemplaza por el menor del sub-árbol derecho).
  • Verificación del árbol vacío (estaVacio).
  • Recorrido preorden (recorrerPreorden).

…ca con la que los NPC mercader toman decisiones de interaccion con el jugador basadas en condiciones internas.

Para esto implemte la clase DecisionTree, con la cual se va a crear un Arbol Binario, con nodos con datos de tipo string.
Esta clase tambien implementa metodos para buscar decisiones, eliminar, consultar si esta vacio y recorrerlo en preorden.
Tambien cuenta con un destructor el cual elimina los nodos del arbol y libera memoria correctamente.
…l orden lexicografico.

Implemente el metodo eliminar, respetando la jerarquia que queda luego en el arbol, para esto implemente una funcion auxiliar encontrarMinimo.
…or parametro, en el arbol. Retorna true si la encuentra, y false si no la encuentra.

Se utiliza recursion para ir recorriendo el arbol.
… no, dependiendo de si la raiz es null o no. Si es null es que aun no se han agregado decisiones al arbol, por ende esta vacio.

Tambien agregue la funcion recorrerPerorden el cual recorre l arbol partiendo desde la raiz, luego se va hacia el sub-arbol izquierdo, y luego hacia el sub-arbol derecho. Nuevamente se utliza recursion para recorrer el arbol.
…servirá para realizar la gestión de los

puestos de avanzada en el mundo postapocalíptico del Refugio 33.
Los nodos del árbol AVL cuentan con características de los puestos de avanzada como un identificaor único y un
nivel de prioridad. Además de los punteros a sus sub nodos izquierdo y derecho.
Se creo el constructor de la clase, y el método insertar.
…ente, para que lo haga hay que pasarle como parámetro el nodo raíz.

También se implementó el destructor de la clase, el cual se encarga de llamar al método que libera los nodos del arbol.
…o encapsulamiento para llamar a bool contains(Nodo* raiz, int outpostId) que se hace

privada porque usa la raíz del arbol AVL.
Esta función recibe un ID para buscar un puesto de avanzado registrado, si lo encuentra retorna true, y si no lo encuentra retorna false. Para buscar utiliza
recursión.
Se hace este commit para poder tener el código actualizado y continuar trabajando en otra PC.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants