104. 二叉树的最大深度
原始题目链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
解题思路:
这道题比较直接的想法是层序遍历二叉树,根据题意,二叉树的深度为根节点到最远叶子节点的最长路径上的节点数,就是记录层数,最后返回层数即可。具体实现看代码及注释。
代码实现:
# 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 __init__(self):
self.max_deep = 0
def maxDepth(self, root: TreeNode) -> int:
# 使用层序遍历二叉树,记录层数
# 注意测试用例有空树的情况,需要加判断条件
if root:
# 使用双端队列操作树的广度优先搜索(BFS)
queue = collections.deque([root])
while queue:
size = len(queue)
for _ in range(size):
# 数据出队操作,左侧是队头
node = queue.popleft()
if node.left:
# 入队
queue.append(node.left)
if node.right:
# 入队
queue.append(node.right)
self.max_deep += 1
return self.max_deep