Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- 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
- int conta( nodo * n){
- if(n)
- return 1+conta(n->left)+conta(n->right);
- else
- return 0;
- }//count
- nodo * inserisci_val(nodo * n, int x){
- if(!n)//Aggiungo il nuovo nodo
- return new nodo(x,0,0);
- else{
- if(conta(n->left) <= conta ( n->right)){
- n->left = inserisci_val(n->left,x);
- return n;
- }//Inserisco a SX
- else{
- n->right = inserisci_val(n->right,x);
- return n;
- }//Inserisco a DX
- }//Se non sono ancora alla foglia
- }//inserisci_val
- nodo * inserisci(nodo * n, int num){
- int x;
- if(!num)
- return n;
- else{
- cout<<"Inserire valore da inseririre nella lista -> ";cin>>x; cout<<endl;
- n = inserisci_val(n,x);
- return inserisci(n,num-1);
- }
- }//inserisci
- void stampal(nodo * root) {
- if(root){
- cout<<root->info<<"(";
- stampal(root->left);
- cout<<",";
- stampal(root->right);
- cout<<")";
- }
- else
- cout<<"_";
- }//stampal
- void fai_ric(nodo * n, nodo **& m){
- if(n){
- *m = n;
- cout<<n->info<<" "<<(*m)->info<<endl;
- m = m+1;
- fai_ric(n->left,m);
- fai_ric(n->right,m);
- }//n
- }//fai_ric
- nodo * fai(nodo * n){
- int nodi = conta(n);
- nodo* A[nodi] = {};
- //nodo *A;
- //A = new nodo[nodi];
- nodo** m [] = &A;
- fai_ric(n,m);
- cout<<(*A)->info<<" ";
- *A = *A+1;
- cout<<(*A)->info<<endl;
- *A = *A+1;
- cout<<(*A)->info<<endl;
- return *A;
- }
- void stampa_A( nodo * A){
- if(A){
- cout<<(A->info)<<" ";
- stampa_A(A+1);
- }
- }//stampa
- main(){
- int n;
- cout<<"Quanti nodi inserire nell'albero? -> "; cin>>n; cout<<endl;
- nodo * root = inserisci(0,n);
- cout<<"Albero creato! . . ."<<endl;
- stampal(root);
- nodo * alberello = fai(root);
- cout<<endl;
- //stampa_A(alberello);
- cout<<endl;
- }
Add Comment
Please, Sign In to add comment