class Solution:
def minDepth(self, root: TreeNode) -> int:
if not root: #排除根为空
return 0
if not root.left and not root.right: #递归出口,叶节点
return 1
min_depth = sys.maxsize #最小深度,初始设为最大整数
if root.left:
min_depth = min(min_depth, self.minDepth(root.left))
if root.right:
min_depth = min(min_depth, self.minDepth(root.right))
return min_depth + 1
解法二:层序
从根开始计算深度,初始=1。遇到叶节点就查看当前深度,并与最小深度记录比较。
import queue
class Solution:
def minDepth(self, root: TreeNode) -> int:
if not root:
return 0
depth = 0
min_depth = sys.maxsize #记录最小深度
q = queue.Queue()
q.put(root)
#层序
while not q.empty():
depth += 1
count = q.qsize()
for _ in range(count):
tmp = q.get()
if tmp.left:
q.put(tmp.left)
if tmp.right:
q.put(tmp.right)
if not tmp.left and not tmp.right:
min_depth = min(depth, min_depth)
return min_depth