@LeetCode刷题
题目
题目链接:https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/
一、实现思路
- 首先判断
root
是否为null
:
if not root:
return 0
- 然后逐层遍历,直到遇到第一个没有左右子节点的节点,返回该层。
二、总体代码
# 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
res = 1
queue = [root]
while queue:
n = len(queue)
for _ in range(0, n):
node = queue.pop(0)
if not node.left and not node.right:
return res
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
res += 1
return res
总结
我一开始不明白叶节点的含义,以为是只要有一个子节点为空就算叶节点,然后在这上面想了好久。。。
叶节点就是位于树的根部的没有左右子节点的节点。