Code Monkey home page Code Monkey logo

estructuras's Introduction

Notas

Ignorar lo que esta dentro de las funciones principales int main(), allí se encuentran las pruebas que se le hacen a las implementaciones mientras se construyen. Una vez terminadas se procede a borrar el contenido de la función main().

Detalles de implementación

Pila, Cola y ColaDoble

En las implementaciones de Pila, Cola y ColaDoble no se utiliza this-> para acceder a la instancia base de Lista debido a la sencillez del código y la casi inexistencia de otras variables diferentes de "lista". En otras palabras, el uso de this-> es redundante en este caso, ya que su principal propósito es distinguir entre variables locales y variables de instancia.

ArbolBinario

En el método level_order de la clase ArbolBinario se utiliza un array estilo C en vez de un std::array debido a que, incluir un std::array implicaría usar una estructura de datos de la librería estándar y no una implementación propia.

En los métodos de la clase ArbolBinario, los argumentos que implican otros árboles deben pasarse por referencia. Ej: arbol.metodo(&otro_arbol);. Esto se debe a que los parámetros son punteros y esperan una dirección de memoria. No tendría sentido trabajar con copias de los árboles, por lo tanto, se debe acceder a los árboles originales.

Repositorio

En el directorio include se encuentran las implementaciones de las estructuras con la extension .hpp, es decir, a modo encabezado (#include <encabezado>). En este caso, al ser un encabezado propio, para poder incluir los archivos se deben usar comillas dobles y escribir la ruta relativa (la ubicación del archivo .hpp respecto al archivo .cpp en el que se está incluyendo): Ej: #include "include/encabezado.hpp".

  • De la implementación de Lista (list), sale la implementación de Pila (stack), Cola (queue) y ColaDoble (deque).
  • De la implementación de ArbolBinario, sale la implementación de ArbolBusquedaBinaria (BST).

Definiciones

Árbol

El concepto de "Árbol Binario" se tomara como una estructura que reúne nodos con el rango de $[0,2]$ hijos, sin orden ni verificaciones. De este salen los otros tipos de arboles en los que si se consideran diferentes reglas, como el Árbol de Búsqueda Binaria (ABB o BST), Adelson-Velskii y Landis (AVL), entre otros.

En esta estructura se define el concepto de nodo como un espacio de memoria asignado por el compilador al instanciar un objeto ArbolBinario. Este puede contener datos o no, lo que implica poder construir un árbol de nodos vacíos (en todo los nodos está el valor por defecto del tipo de dato T definido en la instancia). No puede existir un árbol vacío (sin nodos), ya que para que algo sea considerado un árbol, debe tener por lo menos un nodo. Cuando un árbol tiene un solo nodo, ese único nodo es hoja y raíz al mismo tiempo, es decir, lo que sucede al instanciar por defecto: ArbolBinario<T> arbol{}.

Árbol de Búsqueda Binaria

Esta estructura gestiona por si misma instancias de la clase ArbolBinario, teniendo en cuenta las siguientes reglas:

Dada una raíz, se tiene que:

  • Las claves almacenadas en el subárbol izquierdo de la raíz son menores que la clave de la raíz.
  • Las claves almacenadas en el subárbol derecho de la raíz son mayores que la clave de la raíz.
  • Todos los subárboles cumplen estas propiedades.

Un árbol de Búsqueda Binaria puede estar vació (sin nodos), puesto que, para ser considerado no vació, el usuario debe insertar un elemento explícitamente

La altura del árbol se cuenta desde $1$, pero será $0$ si el árbol está vació.

Tareas

Características

  • Hacer que las estructuras se puedan utilizar desde #include

Implementaciones

  • Lista
    • Pila
    • Cola
    • Cola Doble
    • Arreglo dinámico
  • Árbol Binario
    • BST
    • AVL
    • Red-Black
    • Heap
  • n-Árbol
  • Grafo
  • Tabla Hash

estructuras's People

Contributors

k3ntd4i avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.