Skip to content

Commit 99864bd

Browse files
committed
feat(data structures, trees, trie): alphabet trie
1 parent 8505cf2 commit 99864bd

File tree

5 files changed

+42
-1
lines changed

5 files changed

+42
-1
lines changed

datastructures/trees/trie/__init__.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,14 @@
22
from datastructures.trees.trie.trie import Trie
33
from datastructures.trees.trie.suffix.suffix_tree_node import SuffixTreeNode
44
from datastructures.trees.trie.suffix.suffix_tree import SuffixTree
5+
from datastructures.trees.trie.alphabet_trie.alphabet_trie import AlphabetTrie
6+
from datastructures.trees.trie.alphabet_trie.alphabet_trie_node import AlphabetTrieNode
57

6-
__all__ = ["Trie", "TrieNode", "SuffixTreeNode", "SuffixTree"]
8+
__all__ = [
9+
"Trie",
10+
"TrieNode",
11+
"SuffixTreeNode",
12+
"SuffixTree",
13+
"AlphabetTrie",
14+
"AlphabetTrieNode",
15+
]
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Alphabet Trie
2+
3+
This is a trie implementation for an alphabet of size 26 (a-z).
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
from datastructures.trees.trie.alphabet_trie.alphabet_trie import AlphabetTrie
2+
from datastructures.trees.trie.alphabet_trie.alphabet_trie_node import AlphabetTrieNode
3+
4+
__all__ = [
5+
"AlphabetTrie",
6+
"AlphabetTrieNode",
7+
]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from datastructures.trees.trie.alphabet_trie.alphabet_trie_node import AlphabetTrieNode
2+
3+
4+
class AlphabetTrie:
5+
def __init__(self):
6+
self.root = AlphabetTrieNode()
7+
8+
def insert(self, word: str) -> None:
9+
node = self.root
10+
for char in word:
11+
index = ord(char.lower()) - ord("a")
12+
if not node.children[index]:
13+
node.children[index] = AlphabetTrieNode()
14+
node = node.children[index]
15+
node.is_end_of_word = True
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
from typing import List, Optional
2+
3+
4+
class AlphabetTrieNode:
5+
def __init__(self):
6+
self.children: List[Optional[AlphabetTrieNode]] = [None] * 26
7+
self.is_end_of_word: bool = False

0 commit comments

Comments
 (0)