Trees
DFS
def preorder_dfs(node):
if not node:
return
print(node.val)
preorder_dfs(node.left)
preorder_dfs(node.right)
returnBFS
Trie
Last updated
def preorder_dfs(node):
if not node:
return
print(node.val)
preorder_dfs(node.left)
preorder_dfs(node.right)
returnLast updated
def inorder_dfs(node):
if not node:
return
inorder_dfs(node.left)
print(node.val)
inorder_dfs(node.right)
returndef postorder_dfs(node):
if not node:
return
postorder_dfs(node.left)
postorder_dfs(node.right)
print(node.val)
return def largestValues(self, root: Optional[TreeNode]) -> List[int]:
if root is None:
return []
q = deque([root])
lrg = []
while q:
lvl = len(q)
for _ in range(lvl): # Traverses level
n = q.popleft()
if n.left is not None:
q.append(n.left)
if n.right is not None:
q.append(n.right)
return lrgclass TrieNode:
def __init__(self):
self.children = {}
self.is_end_of_word = False
class Trie:
def __init__(self):
self.root = TrieNode()
def insert(self, word):
current = self.root
for char in word:
if char not in current.children:
# For each char, go down tree inserting if not present
current.children[char] = TrieNode()
# Add each char as a child of current
current = current.children[char]
current.is_end_of_word = True
def search(self, word):
current = self.root
for char in word:
if char not in current.children:
return False
current = current.children[char]
return current.is_end_of_word
# Example usage
trie = Trie()
trie.insert("GLOBAL")
print(trie.search("GLOBE")) # False
print(trie.search("GLOBES")) # False