Advertisement
akanoce

secondonodo

Jan 12th, 2018
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.80 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct nodo{ int info; nodo *left; nodo * right; nodo( int a = 0, nodo * b = 0, nodo * c = 0){ info = a; left = b; right = c;}};//alb
  5.  
  6. int conta( nodo * n){
  7.  
  8. if(n)
  9. return 1+conta(n->left)+conta(n->right);
  10. else
  11. return 0;
  12.  
  13. }//count
  14.  
  15. nodo * inserisci_val(nodo * n, int x){
  16.  
  17. if(!n)//Aggiungo il nuovo nodo
  18. return new nodo(x,0,0);
  19. else{
  20.  
  21. if(conta(n->left) <= conta ( n->right)){
  22.  
  23. n->left = inserisci_val(n->left,x);
  24. return n;
  25.  
  26. }//Inserisco a SX
  27. else{
  28.  
  29. n->right = inserisci_val(n->right,x);
  30. return n;
  31.  
  32. }//Inserisco a DX
  33.  
  34. }//Se non sono ancora alla foglia
  35.  
  36. }//inserisci_val
  37.  
  38.  
  39. nodo * inserisci(nodo * n, int num){
  40. int x;
  41. if(!num)
  42. return n;
  43. else{
  44. cout<<"Inserire valore da inseririre nella lista -> ";cin>>x; cout<<endl;
  45. n = inserisci_val(n,x);
  46. return inserisci(n,num-1);
  47.  
  48. }
  49.  
  50. }//inserisci
  51.  
  52. void stampal(nodo * root) {
  53.  
  54. if(root){
  55. cout<<root->info<<"(";
  56. stampal(root->left);
  57. cout<<",";
  58. stampal(root->right);
  59. cout<<")";
  60. }
  61. else
  62. cout<<"_";
  63.  
  64. }//stampal
  65.  
  66. void fai_ric(nodo * n, nodo **& m){
  67.  
  68. if(n){
  69.  
  70. *m = n;
  71.  
  72. cout<<n->info<<" "<<(*m)->info<<endl;
  73.  
  74. m = m+1;
  75.  
  76. fai_ric(n->left,m);
  77. fai_ric(n->right,m);
  78.  
  79. }//n
  80.  
  81. }//fai_ric
  82.  
  83. nodo * fai(nodo * n){
  84.  
  85. int nodi = conta(n);
  86. nodo* A[nodi] = {};
  87. //nodo *A;
  88. //A = new nodo[nodi];
  89. nodo** m [] = &A;
  90. fai_ric(n,m);
  91. cout<<(*A)->info<<" ";
  92. *A = *A+1;
  93. cout<<(*A)->info<<endl;
  94. *A = *A+1;
  95. cout<<(*A)->info<<endl;
  96.  
  97. return *A;
  98.  
  99. }
  100.  
  101. void stampa_A( nodo * A){
  102.  
  103. if(A){
  104. cout<<(A->info)<<" ";
  105.  stampa_A(A+1);
  106. }
  107. }//stampa
  108.  
  109.  
  110. main(){
  111. int n;
  112. cout<<"Quanti nodi inserire nell'albero? -> "; cin>>n; cout<<endl;
  113. nodo * root = inserisci(0,n);
  114. cout<<"Albero creato! . . ."<<endl;
  115. stampal(root);
  116. nodo * alberello = fai(root);
  117. cout<<endl;
  118. //stampa_A(alberello);
  119. cout<<endl;
  120.  
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement