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);
 }