Advertisement
Guest User

Untitled

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