Update README.md

This commit is contained in:
bt3gl 2023-07-30 16:13:15 -07:00 committed by GitHub
parent a9127ff3fc
commit fcdf1422ac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -135,6 +135,17 @@ def postorder(self, root):
3. two items with an equal priority are dequeued based on their order in the queue 3. two items with an equal priority are dequeued based on their order in the queue
<br>
----
### n-ary tree
<br>
* if a tree is a rooted tree in which each node has no more than N children, it's called N-ary tree.
<br> <br>
---- ----
@ -143,14 +154,35 @@ def postorder(self, root):
<br> <br>
* a variant of n-ary tree in which characters are stored in each node * tries, also called prefix tree, are a variant of n-ary tree in which characters are stored in each node.
* each path down the tree represents a word * each trie node represents a string (a prefix) and each path down the tree represents a word. note that not all the strings represented by trie nodes are meaningful.
* the * nodes (null nodes) are often used to indicate complete words (usually represented by a special type of child) or a boolean flag that terminates the parent node * the root is associated with the empty string.
* a node can have anywhere from 1 through alphabet_size + 1 child * the * nodes (null nodes) are often used to indicate complete words (usually represented by a special type of child) or a boolean flag that terminates the parent node.
* can be used to store the entire english language for quick prefix lookup (O(k), where k is the length of the string) * a node can have anywhere from 1 through alphabet_size + 1 child.
* can be used to store the entire english language for quick prefix lookup (O(k), where k is the length of the string). they are also widely used on autocompletes, spell checkers, etc.
* tries structures can be represented by arrays and maps or trees.
<br> <br>
#### insertion
<br>
* similar to a bst, when we insert a value to a trie, we need to decide which path to go depending on the target value we insert.
* the root node needs to be initialized before you insert strings.
<br>
#### search
<br>
* all the descendants of a node have a common prefix of the string associated with that node, so it should be easy to search if there are any words in the trie that starts with the given prefix.
* we go down the tree depending on the given prefix, once we cannot find the child node, the search fails.
* we can also search for a specific word rather than a prefix, treating this word as a prefix and searching in the same way as above.
* if the search succeeds, we need to check if the target word is only a prefix of words in the trie or if it's exactly a word (for example, by adding a boolean flag).
<br>
--- ---