This is similar, in some ways, to allocation free depth first searches of tree structures. (That is, without a stack.) It is hardly "free" since you have to take care in constructing the tree. However, if you have a tree you will construct once and then want to make sure you can do a DFS without worrying about stack storage, probably a very valuable technique to have in your belt.
Read the article to the end.
> For a production implementation it may be worth packing i into the flags field since it only needs a few bits, even with larger alphabets. Also, I bet, as in Deutsch-Schorr-Waite, the p field could be eliminated and instead one of the child pointers is temporarily reversed. With these changes, this technique would fit into the original struct trie without changes, eliminating the extra memory usage.
Nice, general solution that could apply for many other problems but hardly zero-allocation.
Thanks for the post!