题目-简单难度
给定一个二叉树 root ,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
示例
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:3
示例 2:
输入:root = [1,null,2]
输出:2
提示:
- 树中节点的数量在 [0, 104] 区间内。
- -100 <= Node.val <= 100
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/summary-ranges
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
1. bfs
时间
48ms
击败 80.23%使用 Python3 的用户
内存
17.27mb
击败 83.83%使用 Python3 的用户
# 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 maxDepth(self, root: Optional[TreeNode]) -> int:
# 根节点不存在返回0
if not root: return 0
# 根节点放置于列表
li = [root]
# 计数深度
n = 0
# 列表有节点则遍历
while li:
# 每次遍历同一深度的行,将下一深度的节点添加到列表
for _ in range(len(li)):
# 按从左到右的顺序找到节点,方便处理当前节点下的左右节点
a = li.pop(0)
# 防止a为空的情况进行添加
if a.left != None:
# 下一深度左节点添加至列表
li.append(a.left)
if a.right != None:
# 下一深度右节点添加至列表
li.append(a.right)
n+=1
return n
2. dfs
时间
52ms
击败 60.13%使用 Python3 的用户
内存
18.11mb
击败 66.22%使用 Python3 的用户
# 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 maxDepth(self, root: Optional[TreeNode]) -> int:
# 每次判断是否为空
if root == None: return 0
# 递归获取深度
return max(self.maxDepth(root.left), self.maxDepth(root.right))+1