A trie whose edges hold strings: a node only where paths branch or a word ends. Insert splits an edge, delete merges one back.
This interactive visualization needs JavaScript.