leetcode 树深搜索用BFS方法
104题最大深度 & 111题最小深度
区别只在于终止条件不同,BFS框架一致
搜最大深度时,即使碰到某个节点无,也继续搜
搜最小深度时,只要出现左右都无子节点的悬挂点,就返回深度
附代码
104最大深度
class Solution:
def minDepth(self, root: TreeNode) -> int:
# BFS解法--遍历每一层,有的话则depth+1
# queue = collections.deque([root])
queue = []
queue.append(root)
depth = 0
while queue:
size = len(queue)
for _ in range(size):
# cur = queue.popleft()
cur = queue.pop(0)
if not cur:
continue
if cur.left:
queue.append(cur.left)
if cur.right:
queue.append(cur.right)
depth += 1
return depth
111最小深度
class Solution:
def minDepth(self, root: TreeNode) -> int:
# BFS解法二
if not root:
return 0
depth = 1
queue = []
queue.append(root)
while queue:
for i in range(len(queue)):
cur = queue.pop(0)
if not cur.left and not cur.right:
return depth
if cur.left:
queue.append(cur.left)
if cur.right:
queue.append(cur.right)
depth += 1



