节点定义:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
1. 递归
树的深度 = 左子树的深度与右子树的深度的最大值 + 1
def maxDepth(root: Optional[TreeNode]) -> int:
if not root:
return 0
return max(maxDepth(root.left), maxDepth(root.right)) + 1
2. 遍历
按层遍历树,将每层的节点数据放置在列队中并不断更新,直到列队为空(无叶子节点)
def maxDepth(root: Optional[TreeNode]) -> int:
if not root:
return 0
queue = [root]
res = 0
while queue:
tmp = []
for node in queue:
if node.left:
tmp.append(node.left)
if node.right:
tmp.append(node.right)
queue = tmp
res += 1
return res
发表评论