Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3.  
  4. using namespace std;
  5.  
  6. template <typename T>
  7. class Nodo {
  8. public:
  9. Nodo(T nuevoValor) {
  10. valor = nuevoValor;
  11. }
  12.  
  13. T valor;
  14. Nodo<T>* izquierdo = nullptr;
  15. Nodo<T>* derecho = nullptr;
  16. };
  17.  
  18. template <typename T>
  19. class Arbol {
  20. public:
  21. Arbol(){}
  22.  
  23. void setRaiz(Nodo<T>* nuevaRaiz) {
  24. raiz = nuevaRaiz;
  25. }
  26.  
  27. Nodo<T>* nodoRaiz() {
  28. return raiz;
  29. }
  30.  
  31. void imprimirInfijo() {
  32. imprimirInfijo(raiz);
  33. }
  34.  
  35. void imprimirPrefijo() {
  36. imprimirPrefijo(raiz);
  37. }
  38.  
  39. void imprimirPosfijo() {
  40. imprimirPosfijo(raiz);
  41. }
  42.  
  43. int altura() {
  44. return altura(raiz);
  45. }
  46.  
  47. private:
  48.  
  49. int altura(Nodo<T>* actual) {
  50. if(!actual) {
  51. return 0;
  52. }
  53.  
  54. int alturaHijoIzquierdo = altura(actual->izquierdo);
  55. int alturaHijoDerecho = altura(actual->derecho);
  56. return std::max(alturaHijoIzquierdo, alturaHijoDerecho) + 1;
  57. }
  58.  
  59. void imprimirInfijo(Nodo<T>* actual) {
  60. if(!actual) {
  61. return;
  62. }
  63.  
  64. imprimirInfijo(actual->izquierdo);
  65. cout << actual->valor << endl;
  66. imprimirInfijo(actual->derecho);
  67. }
  68.  
  69. void imprimirPrefijo(Nodo<T>* actual) {
  70. if(!actual) {
  71. return;
  72. }
  73.  
  74. cout << actual->valor << endl;
  75. imprimirInfijo(actual->izquierdo);
  76. imprimirInfijo(actual->derecho);
  77. }
  78.  
  79. void imprimirPosfijo(Nodo<T>* actual) {
  80. if(!actual) {
  81. return;
  82. }
  83.  
  84. imprimirInfijo(actual->izquierdo);
  85. imprimirInfijo(actual->derecho);
  86. cout << actual->valor << endl;
  87. }
  88.  
  89. Nodo<T>* raiz = nullptr;
  90. };
  91.  
  92. int main()
  93. {
  94. auto nodoRaiz = new Nodo<int>(10);
  95. nodoRaiz->izquierdo = new Nodo<int>(20);
  96. nodoRaiz->derecho = new Nodo<int>(30);
  97. nodoRaiz->izquierdo->izquierdo = new Nodo<int>(40);
  98.  
  99. Arbol<int> arbol;
  100. arbol.setRaiz(nodoRaiz);
  101. arbol.imprimirInfijo();
  102. cout<< "altura:" << arbol.altura();
  103.  
  104. return 0;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement