bcache uses this technique, for building up lookup tables for searching btree nodes.
One thing I didn't see mentioned in this treatment is that's possible to directly compute, given the size of the tree and a position in the tree (i.e. index into the array), the position of that node in an inorder traversal - and it's fast. That can be quite useful (bcache uses it for pointer compression).
http://evilpiepirate.org/git/linux-bcache.git/tree/drivers/m...