Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Memorizzare i dati immessi in un albero binario in modo che l etichetta di un
- qualsiasi nodo sia maggiore di tutti i valorei del suo sottoalbero sinistro, e
- minore di tutti quelli del suo sottoalbero destro*/
- #include <stdio.h>
- #include <malloc.h>
- struct nodo{
- int inf;
- struct nodo *left;
- struct nodo *right;
- };
- struct nodo *creaAlb(void);
- struct nodo *creaNodo(struct nodo *, int);
- void anticipato(struct nodo *, int);
- void ciclo(int);
- main()
- {
- struct nodo *radice;
- radice=creaAlb();
- printf("\nVISITA IN ORDINE ANTICIPATO a SOMMARIO\n\n");
- anticipato(radice, 0);
- printf("\n\nINVIO per uscire..");
- getchar(); getchar(); return 0;
- }
- struct nodo *creaAlb(void)
- {
- struct nodo *p=NULL;
- int x=-1;
- while(x!=0){
- printf("\nInserire elemento, 0 per uscire\t");
- scanf("%d", &x);
- if(x!=0) p=creaNodo(p, x);}
- return p;
- }
- struct nodo *creaNodo(struct nodo *p, int val)
- {
- if(p==NULL){
- p=(struct nodo*)malloc(sizeof(struct nodo));
- p->inf=val;
- p->left=NULL;
- p->right=NULL;
- }
- else{
- if(val>p->inf) p->right=creaNodo(p->right, val);
- else if(val<p->inf) p->left=creaNodo(p->left, val);
- else{
- printf("\nElemento gia' presente!\n");
- getchar();}
- }
- return p;
- }
- void anticipato(struct nodo *p, int n)
- {
- if(p!=NULL){
- ciclo(n); n++;
- printf("* %d", p->inf);
- printf("\n");
- if(p->left!=NULL) anticipato(p->left, n);
- else{ ciclo(n); printf("*");}
- printf("\n");
- if(p->right!=NULL) anticipato(p->right, n);
- else{ ciclo(n); printf("*");}}
- else printf("\nAlbero vuoto!!");
- }
- void ciclo(int n)
- {
- int i;
- for(i=0; i<n; i++) printf(" ");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement