---
# System prepended metadata

title: CSPT10 Build Week 2

---

# CSPT10 Build Week 2
## [Min Depth Binary Tree](https://leetcode.com/problems/minimum-depth-of-binary-tree/description/)
```
"""
Understand:
Example 1 (just one node):
    3

min-depth = 1 (3)

Example 2 (one subtree is shorter, this is already given in the problem):
    3
   / \
  9  20
    /  \
   15   7

min-depth = 2 (3->9)

Example 1 (a degenerate tree):
    3
     \
     20
      \
      7

min-depth = 3 (3->20->7)

Plan:
You can use DFS and output the minimum depth or use BFS which is better on average
"""

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def minDepth(self, root: TreeNode) -> int:
        if root == None:
            return 0
        queue = [(root, 1)]
        while len(queue) > 0:
            curr = queue.pop(0)
            currNode, currLevel = curr[0], curr[1]
            if currNode.left == None and currNode.right == None:
                return currLevel
            if currNode.left != None:
                queue.append((currNode.left, currLevel + 1))
            if currNode.right != None:
                queue.append((currNode.right, currLevel + 1))
        return -1

```