class Solution:
def minDepth(self, root: Optional[TreeNode]) -> int:
if not root: return 0
queue = deque([(root,1)])
while queue:
child_size = len(queue)
for _ in range(child_size):
cur, depth = queue.popleft()
#这一步最重要 只需要:若判断左孩子和右孩子同时为空时,则返回当前depth
if cur.left == None and cur.right == None:
return depth
if cur.left: queue.append((cur.left, depth + 1))
if cur.right: queue.append((cur.right, depth + 1))
迭代思路:
只需要注意:
#这一步最重要 只需要:若判断左孩子和右孩子同时为空时,则返回当前depth
if cur.left == None and cur.right == None:
return depth
其它和层序遍历二叉树思路一致。