# class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None # # # @param root TreeNode类 # @return int整型 # class Solution: def run(self , root ): # write code here if root == None: return 0 def min_num(a,b): if a>b: return b return a #第一版直接递归方法 # def min_depth(node): # if node == None: # return 0 # if node.left == None and node.right == None: # return 1 # left = right = None # if node.left != None and node.right != None: # left = min_depth(node.left) # right = min_depth(node.right) # return min_num(left,right) + 1 # if node.left != None: # return min_depth(node.left) + 1 # if node.right != None: # return min_depth(node.right) + 1 # min = min_depth(root) # return min #优化后的剪枝方法 global now_min now_min = 99999999999999999999 def min_depth(node,father_depth): global now_min if node == None: now_min = 0 return now_min father_depth += 1 if father_depth >= now_min:#剪枝 return now_min if node.left == None and node.right == None:#当前节点是叶子节点 now_min = min_num(now_min,father_depth) return now_min left = right = None if node.left != None and node.right != None: left = min_depth(node.left,father_depth) right = min_depth(node.right,father_depth) now_min = min_num(left,right) return now_min if node.left != None: now_min = min_depth(node.left,father_depth) return now_min if node.right != None: now_min = min_depth(node.right,father_depth) return now_min min = min_depth(root,0) return min