Advertisement
Maurito

Arbol Binario de Busqueda

May 26th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.05 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. using namespace std;
  5.  
  6. template <class T> //ES LO MISMO PONER CLASS O TYPENAME???
  7. class Arbolito2{
  8.  
  9. private:
  10.  
  11. struct Nodo {
  12. T dato;
  13. struct Nodo *der;
  14. struct Nodo *izq;};
  15.  
  16. Nodo *Arbol = NULL;
  17.  
  18. public:
  19. void Menu();
  20. struct Nodo *CrearNodo(T);
  21. void insertar(Nodo *&,T);
  22. void Inorden(Nodo *);
  23. bool Pertenece(Nodo *,T);
  24. int CantElem(Nodo *);
  25.  
  26. };
  27.  
  28. int main()
  29. {
  30. Arbolito2<int> Arb;
  31. Arb.Menu();
  32.  
  33. getch();
  34. return 0;
  35. }
  36.  
  37.  
  38. //-------------------------------------------
  39. template <class T>
  40. void Arbolito2<T>::insertar(Nodo *&Arbol,T n)
  41. {
  42. if(Arbol == NULL)
  43. {
  44. Arbol= CrearNodo(n);
  45. }
  46. else
  47. {
  48. if(n < Arbol->dato)
  49. insertar(Arbol->izq,n);
  50. else
  51. insertar(Arbol->der,n);
  52. }
  53. }
  54.  
  55. //-------------------------------------------
  56. template <class T>
  57. void Arbolito2<T>::Inorden(Nodo *Arbol){
  58. if(Arbol != NULL)
  59. {
  60. Inorden(Arbol->izq);
  61. cout<<Arbol->dato<<" ";
  62. Inorden(Arbol->der);
  63. }
  64. }
  65. //-------------------------------------------
  66. template <class T>
  67. Nodo Arbolito2<T>::*CrearNodo(T n){
  68. Nodo *Nuevo_Nodo = new Nodo();
  69.  
  70. Nuevo_Nodo->dato = n;
  71. Nuevo_Nodo->der = NULL;
  72. Nuevo_Nodo->izq = NULL;
  73.  
  74. return Nuevo_Nodo;
  75. }
  76. //-------------------------------------------
  77. template <class T>
  78. bool Arbolito2<T>::Pertenece(Nodo *Arbol, T n)
  79. {
  80. if(Arbol!=NULL)
  81. {
  82. if(Arbol->dato == n)
  83. {
  84. bool esta = true;
  85. return esta;
  86. }
  87. else
  88. {
  89. if(n < Arbol->dato)
  90. Pertenece(Arbol->izq,n);
  91. else
  92. Pertenece(Arbol->der,n);
  93. }
  94. }
  95. else{
  96. bool esta = false;
  97. return esta;
  98. }
  99. }
  100. //-------------------------------------------
  101. template <class T>
  102. int Arbolito2<T>::CantElem(Nodo *Arbol){
  103. if(Arbol != NULL)
  104. {
  105. int Long = 1 + CantElem(Arbol->izq) +CantElem(Arbol->der);
  106. return Long;
  107. }
  108. }
  109. //-------------------------------------------
  110. template <class T>
  111. void Arbolito2<T>::Menu()
  112. {
  113. T dato;
  114. int op;
  115. bool esta;
  116. do{
  117. cout<<"\t :MENU:."<<endl;
  118. cout<<"1. insertar nuevo nodo."<<endl;
  119. cout<<"2. Imprimir el Arbol Inorden."<<endl;
  120. cout<<"3. Pertenencia de un elemento al arbol."<<endl;
  121. cout<<"4. Cantidad de Elementos del Arbol."<<endl;
  122. cout<<"5. Consulta si el Arbol Esta Vacio."<<endl;
  123. cout<<"6. Salir."<<endl;
  124. cin>>op;
  125.  
  126. switch(op){
  127. case 1:
  128. cout<<"\nDigite un numero : ";
  129. cin>>dato;
  130. if(Pertenece(Arbol,dato))
  131. cout<<"El Elemento ya se Encuentra en el Arbol"<<endl;
  132. else
  133. insertar(Arbol,dato);
  134. cout<<"\n";
  135. system("pause");
  136. break;
  137. case 2:
  138. cout<<"LOS NODOS SON: "<<endl;
  139. Inorden(Arbol);
  140. system("pause");
  141. break;
  142. case 3:
  143. cout<<"ingrese el elemento que desea buscar en el Arbol : "<<endl;
  144. cin>>dato;
  145. esta = Pertenece(Arbol,dato);
  146. if(esta)
  147. cout<<"el elemento SI se encuentra en el arbol"<<endl;
  148. else
  149. cout<<"el elemento NO se encuentra en el arbol"<<endl;
  150. system("pause");
  151. break;
  152. case 4:
  153. cout<<" La Cantidad de Elementos es : "<< CantElem(Arbol)<<endl;
  154. system("pause");
  155. break;
  156. case 5:
  157. if(CantElem(Arbol)==0)
  158. cout<<" EL ARBOL ESTA VACIO."<<endl;
  159. else
  160. cout<<" EL ARBOL CONTIENE ELEMENTOS."<<endl;
  161. system("pause");
  162. break;
  163. }
  164. system("cls");
  165. } while(op!=6);
  166. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement