AVL tree implementation in C
Overall, this seems to be some well-crafted code that is clear, concise and doesn't leak memory.  Here are some things that may help you improve your code.

Use the appropriate #includes

In order to compile and link, this code requires the following two lines:

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;


For the program to be complete, these should be listed, too.

Fix node deletion

There is a problem with the remove_item code.  In particular, if we construct a tree with just three items and then attempt to remove the root, the current code causes a crash because the left subtree is added before the call to remove_min(r). To fix that, simply swap the lines in remove_item so that this part of the code looks like this:

    node* m = find_min(r);
    m -&gt; right = remove_min(r);        
    m -&gt; left = l;


This is likely to be the problem that causes the time limit to be exceeded.