1、深度优先搜索
# 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: TreeNode) -> int:
# 递归
# 跳出条件
if not root:
return 0
left_dep = self.maxDepth(root.left) # 每次return maxdep+1
right_dep = self.maxDepth(root.right)
return max(left_dep,right_dep)+1
2、广度优先搜索
# 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: TreeNode) -> int:
if not root:
return 0
# 当前节点入队
queue = collections.deque([root])
depth = 0
while queue:
n = len(queue) # 当前层节点数
for i in range(n): # 遍历当前层所有节点
# 当前节点出队
node = queue.popleft()
# 下一层节点入队
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
# 遍历结束后 depth+1
depth += 1
return depth