SHARE
TWEET

Untitled

a guest Oct 21st, 2019 70 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. template <typename T>
  6. class Nodo {
  7. public:
  8.     T valor;
  9.     Nodo<T>* izquierdo = nullptr;
  10.     Nodo<T>* derecho = nullptr;
  11. };
  12.  
  13. template <typename T>
  14. class ArbolBusquedaBinaria {
  15. public:
  16.     ArbolBusquedaBinaria() {
  17.     }
  18.  
  19.     void insertar(T valor) {
  20.         if(!raiz) {
  21.             raiz = new Nodo<T>;
  22.             raiz->valor = valor;
  23.             return;
  24.         }
  25.  
  26.         insertarRecursivo(raiz, valor);
  27.     }
  28.  
  29.     void sacar(T valor) {
  30.     }
  31.  
  32.     bool buscar(T valor) {
  33.         return buscarRecursivo(raiz, valor);
  34.     }
  35.  
  36. private:
  37.  
  38.     bool buscarRecursivo(Nodo<T>* actual, T valor) {
  39.  
  40.  
  41.         if(!actual) {
  42.              cout << "buscando" << valor << "no encontrado" << endl;
  43.             return false;
  44.         }
  45.  
  46.          cout << "buscando" << valor << "en" << actual->valor << endl;
  47.  
  48.         if(actual->valor == valor) {
  49.             return true;
  50.         }
  51.  
  52.         if(valor < actual->valor) {
  53.             return buscarRecursivo(actual->izquierdo, valor);
  54.         } else {
  55.             return buscarRecursivo(actual->derecho, valor);
  56.         }
  57.     }
  58.  
  59.     void insertarRecursivo(Nodo<T>* actual, T valor) {
  60.         if(actual->valor == valor) {
  61.             return;
  62.         }
  63.  
  64.         if(valor < actual->valor) {
  65.             if(!actual->izquierdo) {
  66.                 // de mi lado izquierdo pero no tengo hijo
  67.                 actual->izquierdo = new Nodo<T>;
  68.                 actual->izquierdo->valor = valor;
  69.                 return;
  70.             } else {
  71.                 insertarRecursivo(actual->izquierdo, valor);
  72.             }
  73.         } else {
  74.             if(!actual->derecho) {
  75.                 // de mi lado izquierdo pero no tengo hijo
  76.                 actual->derecho = new Nodo<T>;
  77.                 actual->derecho->valor = valor;
  78.                 return;
  79.             } else {
  80.                 insertarRecursivo(actual->derecho, valor);
  81.             }
  82.         }
  83.     }
  84.  
  85.     Nodo<T>* raiz = nullptr;
  86. };
  87.  
  88. int main()
  89. {
  90.     ArbolBusquedaBinaria<int> arbol;
  91.     cout << "insertando";
  92.     arbol.insertar(50);
  93.     arbol.insertar(20);
  94.     arbol.insertar(70);
  95.     arbol.insertar(60);
  96.     arbol.insertar(80);
  97.     arbol.insertar(10);
  98.     arbol.insertar(30);
  99.     arbol.insertar(20);
  100.  
  101.     cout << "buscando";
  102.     arbol.buscar(50);
  103.     cout << "<<<<";
  104.     arbol.buscar(20);
  105.     cout << "<<<<";
  106.     arbol.buscar(200);
  107.     return 0;
  108. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top