1、深度优先搜索
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def minDepth(self, root: TreeNode) -> int:
# 当前节点为空
if not root:
return 0
# 没有子节点
if not root.left and not root.right:
return 1
mindep = 10**5
# 取自己和子节点中最小的
if root.left:
mindep = min(mindep,self.minDepth(root.left))
if root.right:
mindep = min(mindep,self.minDepth(root.right))
return mindep+1
2、广度优先搜索
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def minDepth(self, root: TreeNode) -> int:
if not root:
return 0
# 广度优先,后面记录当前节点数量
queue = collections.deque([(root,1)])
while queue:
node,dep = queue.popleft()
if not node.left and not node.right:
return dep
if node.left:
queue.append((node.left,dep+1))
if node.right:
queue.append((node.right,dep+1))
return 0