0votos

Recorridos pre-in-post orden en C

por josejuan hace 6 años

La solución en Haskell es muy mejorable, usando índices no hace falta mover elementos ¡y sólo una búsqueda por nivel!. Esta me gusta mucho más.

Dado los recorridos pre orden e in orden de un arbol obtener el recorrido post orden.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h> 
 
void post(int *p, int a, int b, int c, int d) { 
        int q = c; 
        while(p[q] != p[a]) q++; 
        if(q > c) post(p, a + 1, a + q - c, c, q - 1); 
        if(q < d) post(p, a + q - c + 1, b, q + 1, d); 
        printf("%i, ", p[a]); 
 
int main(int argc, char *argv) { 
        int p [] = { 
            2, 7, 3, 6, 5, 11, 8, 9, 4, // pre 
            3, 7, 5, 6, 11, 2, 8, 9, 4  // ino 
        }; 
        post(p, 0, 8, 9, 17); 
        return 0; 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.