# (python) leetcode: Minimum Depth of Binary Tree

Title:
Given a binary tree, find its minimum depth.The minimum depth is the
number of nodes along the shortest path from the root node down to the
nearest leaf node.

Analysis:
Find the depth of the root node of a binary tree from the nearest leaf node
1. Judge whether the left and right subtrees of the current node are empty
2. If the left and right subtrees are empty, the return value is 1
3. If the left sub tree is empty and the right sub tree is not empty, the depth value of the right sub node of the current node + 1 will be returned
4. If the right sub tree is empty and the left sub tree is not empty, the depth value of the left sub node of the current node + 1 will be returned
5. If the left and right subtrees are not empty, the smaller value + 1 of the depth value of the left and right subtrees of the current node will be returned

Code:

```def mindepth(root):
tmp = root
if(tmp.left == None and tmp.right == None):
return 1
elif(tmp.left == None):
return mindepth(tmp.right) + 1
elif(tmp.right == None):
return mindepth(tmp.left) + 1
else:
return(1+min(mindepth(tmp.left),mindepth(tmp.right)))
```

All codes:

```class treenode :
def __init__(self,val = None,left = None,right = None):
self.val = val
self.left = left
self.right = right
def settag(self,tag = None):
self.tag = tag

def insertnode(root,treenode):
tmp = root
if (root == None):
root = treenode
while(tmp != None):
if(treenode.val == tmp.val):
break
elif(treenode.val <= tmp.val):
if(tmp.left != None):
tmp = tmp.left
else:
tmp.left = treenode
else:
if(tmp.right != None):
tmp = tmp.right
else:
tmp.right = treenode
return root

def mindepth(root):
tmp = root
if(tmp.left == None and tmp.right == None):
return 1
elif(tmp.left == None):
return mindepth(tmp.right) + 1
elif(tmp.right == None):
return mindepth(tmp.left) + 1
else:
return(1+min(mindepth(tmp.left),mindepth(tmp.right)))

if __name__=='__main__':
t=treenode()
L = [8,3,9,2,12,5,34,23,10]
t.val = L
for x in L:
node = treenode()
node.val = x
t = insertnode(t,node)
print(mindepth(t))
print(maxdepth(t))
```

Added by slayer22 on Mon, 11 Nov 2019 21:34:11 +0200