#BFS

class Solution(object):

def minDepth(self, root):

```
if root is None:
return 0
depth = 0
q = []
q.append(root)
while q is not None:
depth +=1
tmp = []
for tmpq in q:
if tmpq.left is not None:
tmp.append(tmpq.left)
if tmpq.right is not None:
tmp.append(tmpq.right)
if tmpq.left is None and tmpq.right is None:
return depth
q = tmp
```

# DFS

class Solution(object):

def minDepth(self, root):

```
if root is None:
return 0
if root.left is None and root.right is None:
return 1
return self.preOrder(root,0)
def preOrder(self,root,depth):
if root is None:
return
if root.left is None and root.right is None:
return depth+1
lDepth = self.preOrder(root.left,depth)
rDepth = self.preOrder(root.right,depth)
if lDepth is not None and rDepth is None:
return lDepth +1
elif lDepth is None and rDepth is not None:
return rDepth +1
else:
return (lDepth if lDepth < rDepth else rDepth) +1
```