summaryrefslogtreecommitdiffstats
path: root/2022-2/L10/mitsuo/Arbol.cpp
diff options
context:
space:
mode:
authorMitsuo Tokumori <[email protected]>2022-12-04 23:13:28 -0500
committerMitsuo Tokumori <[email protected]>2022-12-04 23:13:28 -0500
commit8e01ba134a230e47e8b80351dd8abc8c3b72e683 (patch)
tree3f0e174c80cc4a6e4a2aa2b5351f4dad66b49d89 /2022-2/L10/mitsuo/Arbol.cpp
parentce58d6504665422a0817cf0ddb38fc533d0de33e (diff)
downloadLP1-8e01ba134a230e47e8b80351dd8abc8c3b72e683.tar.gz
LP1-8e01ba134a230e47e8b80351dd8abc8c3b72e683.tar.bz2
LP1-8e01ba134a230e47e8b80351dd8abc8c3b72e683.zip
Add my solution for L10
Diffstat (limited to '2022-2/L10/mitsuo/Arbol.cpp')
-rw-r--r--2022-2/L10/mitsuo/Arbol.cpp68
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);
+}