Skip to content

Instantly share code, notes, and snippets.

# graph is represented by adjacency list: List[List[int]]
# s: start vertex
def dfs_iterating(graph, s):
# set is used to mark visited vertices
visited = set()
# create a stack for DFS
stack = []
# Push vertex s to the stack
# graph is represented by adjacency list: List[List[int]]
# s: start vertex
def dfs(graph, s):
# set is used to mark visited vertices
visited = set()
def recur(current_vertex):
print(current_vertex)
# mark it visited
from collections import deque
# graph: List[List[int]]
# s: start vertex
def bfs(graph, s):
# set is used to mark visited vertices
visited = set()
# create a queue for BFS
queue = deque()
@nhudinhtuan
nhudinhtuan / trie.py
Created April 3, 2020 13:14
Trie Data Structure
class TrieNode(object):
def __init__(self):
self.children = {}
self.is_word = False # mark the end of a word
class Trie(object):
def __init__(self):
@nhudinhtuan
nhudinhtuan / tree_traversal_levelorder_iterative.py
Created April 2, 2020 07:50
Tree traversal - level order
from collections import deque
def levelorder_traversal_iterating(root):
if not root:
return []
result = []
# using queue
queue = deque([root])
while queue:
@nhudinhtuan
nhudinhtuan / tree_traversal_levelorder.py
Last active April 3, 2020 02:53
Tree traversal - level order
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
def levelorder_traversal_recursive(root):
result = []
def recur(node, level):
@nhudinhtuan
nhudinhtuan / tree_traversal_postorder_iterative.py
Last active April 2, 2020 07:49
Tree traversal - postorder
def postorder_traversal_iterating(root):
if not root:
return []
result = []
stack = [root]
# get the result in order of node, right, left
while stack:
current = stack.pop()
if current.left:
@nhudinhtuan
nhudinhtuan / tree_traversal_postorder.py
Last active April 3, 2020 02:49
Tree traversal - postorder
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
def postorder_traversal_recursive(root):
result = []
def recur(node):
@nhudinhtuan
nhudinhtuan / tree_traversal_preorder_interative.py
Last active April 2, 2020 07:49
Tree traversal - preorder
def preorder_traversal_iterating(root):
if not root:
return []
result = []
# using stack
stack = [root]
while stack:
current = stack.pop()
# visit node
@nhudinhtuan
nhudinhtuan / tree_traversal_preorder.py
Last active April 3, 2020 02:44
Tree traversal - Preorder
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
def preorder_traversal_recursive(root):
result = []
def recur(node):