EPI - ch8 - reconstruct binary tree from inorder and preorder
BloomFilterExperiment - do spell checker experiment

Make a spell checker using a HashSet, a configurable Bloom Filter, and a
Trie. This was largely a response to the following Code Kata:

http://codekata.pragprog.com/2007/01/kata_five_bloom.html

The Bloom Filter is suprisingly good with very little memory occupancy.
The Trie is surprisingly abysmal, and even more surprising is that the
Trie is far worse than a HashSet. Using my noddy `measureproc.py`
script, approximately:

- HashSet: 55MB
- BloomFilter (m=2_000_000, k=4, hash=CRC32): 30MB
- Trie: 180MB

I used CRC-32 as the hash function, and hashing the input repeatedly to
create more hash values, for convenience only. You'd want to use Murmur
or fnv in practice. I'm largely interested in memory occupancy so this
isn't relevant.

While we're here it's worth giving Ternary Search Trees a shot,
implementing the same SpellChecker interface, putting this all into a
Gist, then calling it a day.