top of page

Trees: A Refresher

  • mosesg1123
  • Mar 28
  • 3 min read

Updated: Apr 22

Trees are one of the most important data structures in computer science and frequently appear in technical interviews. Whether you’re a new engineer or an experienced developer brushing up on concepts, this guide will walk you through the fundamentals, common types of trees, key operations, and essential problems you should practice.


What Is a Tree?

A tree is a hierarchical data structure consisting of nodes. Each node contains a value and may have child nodes. Unlike graphs, trees have no cycles and are connected, meaning there's exactly one path between any two nodes.


Key Terminology:

  • Root: The topmost node in the tree.

  • Parent & Child: A node connected above is a parent, and those below are children.

  • Leaf Node: A node with no children.

  • Depth: Distance from the root to a node.

  • Height: Maximum depth of a tree.

  • Binary Tree: A tree where each node has at most two children.

  • Balanced Tree: A tree where the height is kept as small as possible.


Common Types of Trees

Binary Tree 

A tree where each node has at most two children (left and right).

Common Problems:
  • Maximum Depth of a Binary Tree

  • Symmetric Tree

  • Path Sum


Binary Search Tree (BST) 🔍

A BST is a binary tree where:

  • Left subtree contains nodes with values less than the current node.

  • Right subtree contains nodes with values greater than the current node.

Common Problems:
  • Validate a BST

  • Find the Lowest Common Ancestor

  • Find the kth Smallest Element in a BST


Balanced Trees ⚖️

A tree that ensures operations remain efficient by keeping the height logarithmic.

Examples:

  • AVL Tree: Self-balances by rotating nodes.

  • Red-Black Tree: Used in many databases and language implementations (e.g., Java’s TreeMap).

Common Problems:
  • Insert into a Balanced BST

  • Find the Height of a Balanced Tree


Trie (Prefix Tree) 🔠

A tree-like structure that stores strings, typically used for autocomplete and dictionary-related problems.

Common Problems:
  • Implement a Trie (Insert, Search, StartsWith)

  • Find Words With a Common Prefix


Tree Traversal Techniques

Depth-First Search (DFS)

DFS explores nodes as deep as possible before backtracking. It uses recursion or a stack.

Types of DFS:

  • Preorder (Root → Left → Right)

  • Inorder (Left → Root → Right) (used in BSTs to get sorted order)

  • Postorder (Left → Right → Root)

Example (Inorder Traversal - Recursive):

def inorder_traversal(root):
    if not root:
        return []
    return inorder_traversal(root.left) + [root.val] + inorder_traversal(root.right)

Breadth-First Search (BFS)

Explores nodes level by level using a queue (FIFO).

Example:

from collections import deque

def level_order_traversal(root):
    if not root:
        return []
    
    queue = deque([root])
    result = []
    
    while queue:
        node = queue.popleft()
        result.append(node.val)
        if node.left:
            queue.append(node.left)
        if node.right:
            queue.append(node.right)
    
    return result

Essential Tree Problems for Interviews

Easy:

✅ Maximum Depth of a Binary Tree (LeetCode #104)

✅ Symmetric Tree (LeetCode #101)

✅ Invert a Binary Tree (LeetCode #226)

Medium:

✅ Validate Binary Search Tree (LeetCode #98)

✅ Lowest Common Ancestor (LeetCode #236)

✅ Construct Binary Tree from Preorder and Inorder Traversal (LeetCode #105)

Hard:

✅ Serialize and Deserialize a Binary Tree (LeetCode #297)

✅ Binary Tree Maximum Path Sum (LeetCode #124)

✅ Count Complete Tree Nodes (LeetCode #222)


Practical Applications of Trees

✔️ Databases & Indexing: B-Trees are used in databases for efficient searching.

✔️ File Systems: Hierarchical structures for storing directories and files.

✔️ Networking: Spanning trees are used in network routing.

✔️ Artificial Intelligence: Decision trees are used in machine learning.


Summary Table

Tree Type

Best Use Case

Time Complexity (Search)

Binary Tree

General-purpose

O(n)

Binary Search Tree

Sorted data storage

O(log n) (balanced)

AVL Tree

Self-balancing BST

O(log n)

Red-Black Tree

Used in databases, maps

O(log n)

Trie

Prefix-based search

O(m) (where m = word length)

Final Tips for Interviews

🚀 Know Recursive and Iterative Approaches: Many tree problems are solved using recursion, but iterative solutions (using a stack or queue) are sometimes required.

🚀 Understand Edge Cases: Test your solutions with:

  • Empty trees

  • Single-node trees

  • Trees with only left or right children

🚀 Practice Writing Clean Code: Many tree-based problems require good structuring. Write functions that are modular and reusable.


Closing Thoughts

Mastering trees will significantly improve your problem-solving skills and help you perform better in coding interviews. Focus on traversals, common operations, and problem-solving patterns. Happy coding!

Recent Posts

See All
Non-Overlapping Intervals

Learn how to solve the Non-Overlapping Intervals coding problem to prepare for your next technical interview!

 
 
 
Merge Intervals

"Merge Intervals" is one of those classic algorithm problems that shows up frequently in technical interviews. It's a great test of your...

 
 
 
Jump Game II

Jump Game II is a classic follow-up to the original Jump Game problem. It’s not just about whether you can reach the end... now you have to do it in the fewest jumps possible! That small change turns

 
 
 

Comments


Drop Me a Line, Let Me Know What You Think

Thanks for submitting!

© 2023 by Train of Thoughts. Proudly created with Wix.com

bottom of page