思路
考虑从递归出发,联想递归三部曲:返回什么、传入的参数是什么、遍历的方式是什么。此题现在需要我们整个树,并且需要从根节点出发,因此我们选择先序遍历即可。另一张办法,则是选择通过队列实现层次遍历,统计队列长度也就是树的最大深度
# 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:#递归def preorder(node):if node==None:return 0left=preorder(node.left)right=preorder(node.right)return 1+max(left,right)return preorder(root)
# 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:que=deque()if root:que.append(root)result=[]while que:L=len(que)level=[]while L:L-=1node=que.popleft()if node:level.append(node.val)if node.left:que.append(node.left)if node.right:que.append(node.right)result.append(level)return len(result)