module7 - Radix Trees (Tries) Suppose we have data items...

Info iconThis preview shows pages 1–7. Sign up to view the full content.

View Full Document Right Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Radix Trees (Tries) Suppose we have data items whose keys are binary strings, not necessarily of the same length. We can organize our data into a dictionary using a binary tree based on bitwise comparisons of strings. This data structure is called a radix tree or trie (pronounced try). Its main features are as follows: 1. a left child corresponds to a 0 bit, 2. a right child corresponds to a 1 bit, 3. items (or, alternatively, links to items) are stored only in leaf nodes of the tree. Note: property 3 implies that no string should be a prefix of another string (e.g., 011 is a prefix of 01101). We will always make this assumption unless otherwise stated. 156/ 193 Operations on Tries Search: Suppose X = x 1 x 2 ...x . We can use a binary search technique to locate an item with key X . There are four possible outcomes: 1. A successful search which ends at the correct leaf node. 2. an unsuccessful search that ends at a leaf node storing a key Y where Y is a prefix of X . 3. an unsuccessful search that ends at a non-leaf node at level of the trie (in this case, X is a prefix of a string Y in the trie). 4. an unsuccessful search that ends at a non-leaf node at some level k < of the trie. The complexity of Search is O ( | X | ), where | X | denotes the length of the string X . 157/ 193 Trie Search Algorithm: TrieSearch ( T,X ) N Root ( T ); Length ( X ); i 1; case while i and case = 0 do if N is a leaf node then case 2 else if x i = 0 then N LeftChild ( N ) else N RightChild ( N ) if N = nil then case 4 else i i + 1 if i = + 1 then if N is a leaf node then case 1 else case 3 return ( case ,N ) 158/ 193 Operations on Tries (cont.) Insert: Suppose X = x 1 x 2 ...x . To insert a node containing the (new) key X , we first do an unsuccessful search for X . If we terminate in case 2 or 3, then we cannot insert X into the tree because it will violate the prefix-free property. So assume we end up in case 4. Then the path from the root node to N corresponds to a prefix of X , say x 1 x 2 ...x k , where k < . Now create - k new nodes in the trie to complete this prefix to X . The complexity of Insert is O ( | X | ). 159/ 193 Operations on Tries (cont.) Delete: Suppose X = x 1 x 2 ...x . To delete the node containing the key X , we first do a successful search for X that terminates at a leaf node N . We delete N and all ancestors of N until we reach an ancestor that has two children ; then stop. The complexity is O ( | X | ). 160/ 193 Compressed Tries A compressed trie eliminates nodes with only one child, which decreases the storage requirement of the data structure. Roughly speaking, we compress every path of one-child nodes to a single edge . Each node stores an index indicating the next bit to be tested during a search....
View Full Document

This note was uploaded on 02/21/2012 for the course PSYCH 101 taught by Professor Ennis during the Winter '09 term at Waterloo.

Page1 / 38

module7 - Radix Trees (Tries) Suppose we have data items...

This preview shows document pages 1 - 7. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online