Part 4: Advanced Data Structures
The Turning Point in My Interview Prep
Binary Trees
Understanding Trees Visually
1
/ \
2 3
/ \
4 5Tree Node Definition
class TreeNode:
"""Binary tree node"""
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
# Helper function I use constantly
def create_tree(values: list) -> TreeNode:
"""Create binary tree from level-order array"""
if not values:
return None
root = TreeNode(values[0])
queue = [root]
i = 1
while queue and i < len(values):
node = queue.pop(0)
if i < len(values) and values[i] is not None:
node.left = TreeNode(values[i])
queue.append(node.left)
i += 1
if i < len(values) and values[i] is not None:
node.right = TreeNode(values[i])
queue.append(node.right)
i += 1
return rootCore Tree Traversal Patterns
Pattern 1: Depth-First Search (DFS)
Pattern 2: Breadth-First Search (BFS)
Common Tree Problems
Graphs
My Graph Aha Moment
Graph Representations
Core Graph Patterns
Pattern 1: DFS (Depth-First Search)
Pattern 2: BFS (Breadth-First Search)
Heaps (Priority Queues)
When I Use Heaps
Heap Operations in Python
Heap Problems
Key Takeaways
Practice Problems
What's Next?
Last updated