int Arbin<Elem>::profundidad(Nodo * arbol) const { if (arbol == NULL) { return 0; } else { return (1 + max(profundidad(arbol->subIzquierdo), profundidad(arbol->subDerecho))); } }
int profundidad(struct nodo * raiz){ int profIzq,profDer; if(raiz != NULL){ profIzq = profundidad(raiz->izquierdo); profDer = profundidad(raiz->derecho); if(profIzq > profDer) return profIzq+1; else return profDer+1; } else return 0; }
void ondas_c ( unsigned char *src, unsigned char *dst, int m, int n, int row_size, int x0, int y0 ) { unsigned char (*src_matrix)[row_size] = (unsigned char (*)[row_size]) src; unsigned char (*dst_matrix)[row_size] = (unsigned char (*)[row_size]) dst; float new_pixel; float prof; for (int i = 0; i<m; i+=1) { for (int j = 0; j<n; j+=1) { prof = profundidad(i, j, x0, y0); new_pixel = (prof * 64.0) + (float) src_matrix[i][j]; new_pixel = new_pixel < 0.0 ? 0.0 : new_pixel; new_pixel = new_pixel > 255.0 ? 255.0 : new_pixel; dst_matrix[i][j] = (unsigned char) new_pixel; } } }
int main(int argc, char *argv[]) { setlocale(LC_ALL, ""); int s = 1,opc = 0, contador = 0; while(s){ system("cls"); printf("Árbol binario (Doble apuntador)"); printf("\nSelecciona una opción"); printf("\n1) Meter datos"); printf("\n2) Imprimir en preorden"); printf("\n3) Imprimir en inorden"); printf("\n4) Imprimir en postorden"); printf("\n5) Imprimir todo"); printf("\n6) Obtener la profundidad del árbol"); printf("\n7) Eliminar datos"); printf("\n8) Buscar"); printf("\n9) Salir\n"); scanf("%d",&opc); switch(opc){ case 1: printf("\nInserta un valor: "); scanf("%d", &valor); system("cls"); insertar(); break; case 2: preorden(raiz); getch(); break; case 3: inorden(raiz); getch(); break; case 4: postorden(raiz); getch(); break; case 5: system("cls"); printf("Valores del árbol:"); imprimir(raiz,contador); getch(); break; case 6: printf("Profundidad: %d",profundidad(raiz)); getch(); break; case 7: printf("\nInserta un valor: "); scanf("%d", &valor); system("cls"); eliminar(&raiz,valor); break; case 8: printf("\nInserta un valor: "); scanf("%d", &valor); system("cls"); printf("Se encontró el valor %d",(buscar(raiz,valor))->dato); getch(); break; case 9: s = 0; break; default: printf("Muy mal >:("); getch(); break; } } system("cls"); printf("Adiós"); return 0; }
int Arbin<Elem>::profundidad() const { return profundidad(raiz); }
int main(void) { GRAFO g; int opcion; do { opcion = menu(); switch (opcion) { case 1: introducirGrafo(&g); break; case 2: /*Algoritmo de Dijkstra */ algoritmoDijkstra(g); getchar(); getchar(); getchar(); break; case 3: /*Algoritmo de Floyd */ algoritmoFloyd(g); getchar(); getchar(); getchar(); break; case 4: /*Algoritmo de Prim */ if (verTipoGrafo(g) == 'n') algoritmoPrim(g); else printf("El grafo es dirigido\n"); getchar(); getchar(); getchar(); break; case 5: /*Algoritmo de Kruskal */ if (verTipoGrafo(g) == 'n') algoritmoKruskal(g); else printf("El grafo es dirigido\n"); getchar(); getchar(); getchar(); break; case 6: /* busqueda en profundidad */ profundidad(g); getchar(); getchar(); break; case 7: /* busqueda en amplitud */ amplitud(g); getchar(); getchar(); break; case 8: /* Clasificación Topológica */ if (verTipoGrafo(g) == 'd') topologica(g); else printf("El grafo es no dirigido\n"); getchar(); getchar(); break; case 9: /* Clasificación de los lados de grafo dirigido en base a la búsqueda en profundidad */ if (verTipoGrafo(g) == 'd') tiposLados(g); else printf("El grafo es no dirigido\n"); getchar(); getchar(); break; } }while (opcion != 0); }