From 8e01ba134a230e47e8b80351dd8abc8c3b72e683 Mon Sep 17 00:00:00 2001 From: Mitsuo Tokumori Date: Sun, 4 Dec 2022 23:13:28 -0500 Subject: Add my solution for L10 --- 2022-2/L10/mitsuo/Arbol.cpp | 68 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 2022-2/L10/mitsuo/Arbol.cpp (limited to '2022-2/L10/mitsuo/Arbol.cpp') 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 +#include +#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); +} -- cgit v1.2.3