ptno* esvazia(ptno **tree){ if(*tree!=NULL){ esvazia(&(*tree)->esq); esvazia(&(*tree)->dir); desaloca_no(tree); *tree=NULL; } }
void bfs(grafo *g,int s,Fila *f){ int u,i; g->cor[s]=cinza; g->dist[s]=0; esvazia(f); insere(f,s); while(!vazia(f)){ u=retira(f); for(i=0;i<g->tam;i++){ if(g->A[u][i]!=0 && g->cor[i]==branco){ g->cor[i]=cinza; g->dist[i]=g->dist[u]+1; g->pred[i]=u; insere(f,i); } } g->cor[u]=preto; } }
void freeFila(Fila f){ esvazia(f); free(f); }