111二叉树的最小深度

class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None

# 这道题用深搜很容易就做的出来。遍历每一个节点。
# 但是需要注意的是节点分支为空的时候应该区分开来。
class Solution:
def minDepth(self, root: TreeNode) -> int:
return self.dfs(root)
def dfs(self,root):
# 当节点为空,返回0
if not root:
return 0
# 递归求左子树的节点深度
left = self.dfs(root.left)
# 递归求右子树的节点深度
right = self.dfs(root.right)
# 注意这里需要判断存不存在左右节点。
# 不能直接返回left,right中的小的那个。
if left != 0 and right == 0:
return left + 1
elif right != 0 and left == 0:
return right + 1
# 最后一种情况是左右节点都存在,所以要返回两个里边最小的那个
else :
return min(left,right) + 1

posted @ 2020-08-21 13:39  月为暮  阅读(194)  评论(0编辑  收藏  举报