Alberi con al più 2 figli per ogni nodo
Dichiarazioni
typedef struct nodo { int info; struct nodo *sx, *dx; } NODO; typedef NODO *ptree;
Operazioni
Visite
void preorder(ptree p) { if(p != NULL) { printf("%d ", p->info); preorder(p->sx); preorder(p->dx); } }
void inorder(ptree p) { if(p != NULL) { inorder(p->sx); printf("%d ", p->info); inorder(p->dx); } }
void postorder(ptree p) { if(p != NULL) { postorder(p->sx); postorder(p->dx); printf("%d ", p->info); } }
Contare i nodi
int conta_nodi(ptree p) { if(p == NULL) return 0; else return 1+conta_nodi(p->sx)+conta_nodi(p->dx); }
Eliminare tutti i nodi
void ret_tree(ptree *p) { if((*p) != NULL) { ret_tree(&((*p)->sx)); ret_tree(&((*p)->dx)); free((*p)); (*p)=NULL; } }