Guest User

Untitled

a guest
Oct 21st, 2019
71
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