diff --git a/src/treewalk.c b/src/treewalk.c index 5832d5236154996c1b48f3e4b0c1f6ca73b63073..c8d5b07a7fcc243431663768572909cce345a7af 100644 --- a/src/treewalk.c +++ b/src/treewalk.c @@ -151,25 +151,28 @@ void libhqr_treewalk(libhqr_tree_t *qrtree,int k){ int pivot = qrtree->p; int p = pivot; int a,b; - if(qrtree->gettype(qrtree, k, p)) libhqr_queue_tile_post(&tt,p); - libhqr_queue_tile_post(&ts, p); - - libhqr_queue_tile_last(&ts); - a = ts->numero; - printf("%d\n" , a); - libhqr_queue_tile_last(&tt); - b = tt->numero; - printf("%d\n", b); - while(a != b){ - libhqr_queue_tile_get(&ts); + while(p = qrtree->nextpiv(qrtree, k, pivot, p)){ + while(p = qrtree->prevpiv(qrtree, k, pivot, p)){ + if(qrtree->gettype(qrtree, k, p)) libhqr_queue_tile_post(&tt,p); + libhqr_queue_tile_post(&ts, p); + } libhqr_queue_tile_last(&ts); a = ts->numero; printf("%d\n" , a); + libhqr_queue_tile_last(&tt); + b = tt->numero; + printf("%d\n", b); + while(a != b){ + libhqr_queue_tile_get(&ts); + libhqr_queue_tile_last(&ts); + a = ts->numero; + printf("%d\n" , a); + } + libhqr_queue_tile_get(&tt); + libhqr_queue_tile_last(&tt); + b = tt->numero; + printf("%d\n", b); } - libhqr_queue_tile_get(&tt); - libhqr_queue_tile_last(&tt); - b = tt->numero; - printf("%d\n", b); libhqr_queue_tile_delete(&tt); libhqr_queue_tile_delete(&ts); }