diff options
Diffstat (limited to '2022-2/L10/mitsuo/Arbol.cpp')
| -rw-r--r-- | 2022-2/L10/mitsuo/Arbol.cpp | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/2022-2/L10/mitsuo/Arbol.cpp b/2022-2/L10/mitsuo/Arbol.cpp new file mode 100644 index 0000000..4cb1ccb --- /dev/null +++ b/2022-2/L10/mitsuo/Arbol.cpp @@ -0,0 +1,68 @@ +/* + * File: Arbol.cpp + * Author: mitsuo + * + * Created on 02 December 2022, 12:40 + */ + +#include <iostream> +#include <iomanip> +#include "Arbol.h" + +using namespace std; + +Arbol::Arbol() { + this->raiz = nullptr; +} + +Arbol::Arbol(const Arbol& orig) { +} + +Arbol::~Arbol() { +} + + +void Arbol::insert(Medicamento * m) { + Nodo * nodo = new Nodo; + Nodo ** walk = &this->raiz; + + nodo->med = m; + + while (*walk) { + if (m->getCodigo() < (*walk)->med->getCodigo()) { + walk = &(*walk)->izq; + } else { + walk = &(*walk)->der; + } + } + *walk = nodo; +} + +void Arbol::print(std::ostream &output) { + this->print_rec(this->raiz, output); +} + +void Arbol::print_rec(Nodo * nodo, std::ostream &output) { + /* in order */ + if (!nodo) { + return; + } + this->print_rec(nodo->izq, output); + nodo->med->imprime(output); + this->print_rec(nodo->der, output); +} + + +void Arbol::actualiza(std::istream &input) { + this->actualiza_rec(this->raiz, input); +} + +void Arbol::actualiza_rec(Nodo * nodo, std::istream &input) { + /* in order */ + if (!nodo) { + return; + } + this->actualiza_rec(nodo->izq, input); + nodo->med->actualiza(input); + this->actualiza_rec(nodo->der, input); +} |
