Leetcode之二叉树深度(python解法)
1.题目描述

给定一个二叉树 root ,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
示例 1:

输入:root = [3,9,20,null,null,15,7] 输出:3
示例 2:
输入:root = [1,null,2] 输出:2
提示:
- 树中节点的数量在
[0, 104]区间内。 -100 <= Node.val <= 100
2.解答方法
1.可以使用递归 算法,算每个节点的左子树和右子树的深度(选择最大的),然后加上自己这一层,就可以知道最大深度
2.使用BFS算法(广度优先搜索),对树或者图逐层遍历,就是先访问第一层,然后逐层访问
循环遍历的时候,先弹出本节点,若有左,右子树就加入队列
递归:
# 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 not root:
return 0
left_depth=self.maxDepth(root.left) //算出左子树最深
right_depth=self.maxDepth(root.right) //算出右子树最深
return 1+max(left_depth,right_depth) //最后加上root节点
BFS算法
from collections import deque
class Solution:
def maxDepth(self, root: Optional[TreeNode]) -> int:
if not root:
return 0
queue = deque([root]) # 初始化队列,放入根节点
depth = 0 # 深度计数器while queue:
depth += 1 # 即将处理新的一层
level_size = len(queue) # 当前层的节点数量
# 只处理当前层的所有节点
for _ in range(level_size):
node = queue.popleft()
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
return depth
更多推荐


所有评论(0)