Think about what your trie encodes. On each node, you have a path that leads you to that node, so in your example, you start with & Lambda; (which is the capital of Lambda, this Greek font sucks) root node corresponding to an empty string. & Lambda; has children for each letter used, so in your dataset you have one branch for "i".
- & Lambda;
- & Lambda; β "I"
There are two children in the "i" node: one for "m" and one for "n". The next letter is "n", so you accept this,
- & Lambda; β "I" β "p"
and since the only word that begins with "i", "n" in your dataset is "located", there are no children from "n". That's a coincidence.
Now, say, the data set, instead of having an in, had an infindibulum. (What I find in SF remains as an exercise.) You still get to the βnβ node in the same way, but then if the next letter you get is βqβ, you know that the word doesn ' t appears in your dataset at all because there is no "q" branch. At this point, you say "okay, there is no coincidence." (Perhaps you will then start adding a word, perhaps not, depending on the application.)
But if the next letter is "f," you can keep going. You can short circuit this with a small number of ships: if you reach a node that represents a unique path, you can hang the entire line with node. When you get to this node, you know that the rest of the line should be "findibulum", so you used the prefix to match the whole line and returned it.
How do you use it? in many interpreters without UNIX commands, such as the old VAX DCL, you can use any unique command prefix. So, the equivalent of ls (1) was DIRECTORY , but no other command started with DIR, so you could type DIR , and that was as good as the whole word. If you could not remember the correct command, you can enter only "D" and press (I think) ESC; CLI DCL will return to you all the commands started with D that it can search very quickly.