Inserting into a TAVL Tree - GNU libavl 2.0.3
Author: Ben Pfaff

8.4 Insertion |

Insertion into an AVL tree is not complicated much by the need to update threads. The outline is the same as before, and the code for step 3 and the local variable declarations can be reused entirely:

    303. <TAVL item insertion function 303> =
    void **
    tavl_probe (struct tavl_table *tree, void *item)
    {
      <avl_probe() local variables; avl => tavl 149>

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

      <Step 1: Search TAVL tree for insertion point 304>
      <Step 2: Insert TAVL node 305>
      <Step 3: Update balance factors after AVL insertion; avl => tavl 152>
      <Step 4: Rebalance after TAVL insertion 306>
    }

This code is included in 302.