if not root :return 0 #如果节点为空反回0
if not root.left and not root.right: #叶子结点,开始计算
return 1
depth = 10**6 #保存深度,更新深度
if root.left:
depth = min(self.minDepth(root.left),depth) #保存左边深度最小的
if root.right:
depth = min(self.minDepth(root.right),depth) #右边深度与左边深度取最小的
return depth+1
if not root:return 0
que = collections.deque([(root,1)]) #使用队列将结点层数入队
while que:
node , depth = que.popleft()
if not node.left and not node.right: #发现叶子结点,返回深度结束
return depth
if node.left: #当前结点不是叶子,就将其孩子和深度入队,
que.append((node.left,depth+1))
if node.right:
que.append((node.right,depth+1))