Deleting from a TRB Tree - GNU libavl 2.0.2
Author: Ben Pfaff

9.4 Deletion |

The outline for the deletion function follows the usual pattern.

    349. <TRB item deletion function 349> =
    void *
    trb_delete (struct trb_table *tree, const void *item)
    {
      struct trb_node *pa[TRB_MAX_HEIGHT]; /* Nodes on stack. */
      unsigned char da[TRB_MAX_HEIGHT];    /* Directions moved from stack nodes. */
      int k = 0;                           /* Stack height. */

      struct trb_node *p;
      int cmp, dir;

      assert (tree != NULL && item != NULL);

      <Step 1: Search TRB tree for item to delete 350>
      <Step 2: Delete item from TRB tree 351>
      <Step 3: Rebalance tree after TRB deletion 356>
      <Step 4: Finish up after TRB deletion 362>
    }

This code is included in 336.