Tries and Segment Trees
Tries (Prefix Trees)
Node Structure
class TrieNode:
def __init__(self):
self.children = {}
self.is_end = False1. Standard Trie Implementation
class Trie:
def __init__(self):
self.root = TrieNode()
def insert(self, word: str) -> None:
node = self.root
for char in word:
if char not in node.children:
node.children[char] = TrieNode()
node = node.children[char]
node.is_end = True
def search(self, word: str) -> bool:
node = self.root
for char in word:
if char not in node.children:
return False
node = node.children[char]
return node.is_end
def startsWith(self, prefix: str) -> bool:
node = self.root
for char in prefix:
if char not in node.children:
return False
node = node.children[char]
return TrueCommon SDE 3 Trie Problems:
Segment Trees
Node Structure
Lazy Propagation
Alternative: Fenwick Tree (Binary Indexed Tree)
Pattern Recognition
Interview Strategy
Quick Revision
Last updated