This contribution caches the category tree as a serialized array. Upon each page call the script first checks to make sure the cache file exists and if so uses that data to populate the category tree. If the file does not exist it calls tep_get_categories(), sets the $tree array, and then writes the data to the cache file.
Modifications by the store owner to the categories (rename, move, delete, etc.) are handled by the script to simply delete the cache file. When a customer visits the store and the cache file in not present it will create it automatically.
The category menu is fully CSS driven and easy to modify for the individual store look and feel. In addition, it is faster and less resource intensive than the traditional DHTML menu solutions.