Editing
Trie
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Trie == [[File:Trie_example.png|thumb|right|350px|A simple trie for keys "A", "to", "tea", "ted", "ten", "i", "in", and "inn".]] A '''trie''' (pronounced "try"), also known as a '''prefix tree''' or '''digital tree''', is a tree-like data structure used to store an associative array where the keys are usually strings. Each node in the trie represents a single character in the key, and the root node represents an empty string. Tries are particularly useful for searching and manipulating large sets of strings, as they allow for efficient insertion, deletion, and retrieval operations. They are widely used in applications such as autocomplete, spell checking, IP routing, and string matching algorithms. == Structure == A trie is composed of nodes, where each node represents a character in a key. Each node can have multiple children, one for each character that can follow the current character in the key. A boolean flag in each node indicates whether the node represents the end of a key. A trie can be seen as a deterministic finite automaton (DFA) where each state represents a prefix of the input strings and transitions between states represent characters. == Operations == Trie supports the following operations: * '''Insertion''': To insert a key, start at the root node and follow the path of characters in the key. If a character in the key is not present as a child of the current node, create a new node for that character and add it as a child. Mark the final node in the path as the end of the key. * '''Search''': To search for a key, start at the root node and follow the path of characters in the key. If the final node in the path is marked as the end of the key, the key is present in the trie. * '''Deletion''': To delete a key, search for the key in the trie. If found, unmark the end of the key node and remove any nodes with no children from the path in reverse order. * '''Prefix search''': To search for all keys with a given prefix, start at the root node and follow the path of characters in the prefix. Perform a depth-first search from the final node in the path, concatenating characters along the path and returning all keys marked as end nodes. == Historical Problems == Tries have been used to solve various historical problems, including: * '''Spell checking''': Trie has been widely used in spell checking algorithms to efficiently store and search for words in a dictionary. The trie structure allows for rapid identification of words with similar prefixes, making it easier to suggest corrections for misspelled words. * '''IP Routing''': Patricia trie, a space-optimized trie variant, has been used to store routing tables in IP routing algorithms. It enables quick lookups for the longest matching prefix of an IP address. * '''Genome Sequencing''': Tries have been employed in computational biology to search for patterns in DNA sequences, enabling researchers to identify genes and other genetic features. * '''Auto-complete''': Trie is a popular data structure for implementing auto-complete functionality in applications and search engines, as it allows for efficient retrieval of all strings that share a common prefix. == See Also == * [[Suffix Tree]] * [[Suffix Array]] * [[Aho-Corasick Algorithm]] * [[Radix Tree (Patricia Trie)]] [[Category:Data Structure]] [[Category:Trie]]
Summary:
Please note that all contributions to Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
My wiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Page
Discussion
English
Views
Read
Edit
View history
More
Search
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Tools
What links here
Related changes
Special pages
Page information