TBST Traverser Retreating - GNU libavl 2.0.3
Author: Ben Pfaff

7.8.8 Backing Up to the Previous Node |

    278. <TBST traverser back up function 278> =
    void *
    tbst_t_prev (struct tbst_traverser *trav)
    {
      assert (trav != NULL);

      if (trav->tbst_node == NULL)
        return tbst_t_last (trav, trav->tbst_table);
      else if (trav->tbst_node->tbst_tag[0] == TBST_THREAD)
        {
          trav->tbst_node = trav->tbst_node->tbst_link[0];
          return trav->tbst_node != NULL ? trav->tbst_node->tbst_data : NULL;
        }
      else
        {
          trav->tbst_node = trav->tbst_node->tbst_link[0];
          while (trav->tbst_node->tbst_tag[1] == TBST_CHILD)
            trav->tbst_node = trav->tbst_node->tbst_link[1];
          return trav->tbst_node->tbst_data;
        }
    }

This code is included in 270.