1. 题目背景与核心概念解析
这道算法题结合了二叉树的后序遍历与深度计算两个关键知识点。在实际工程中,这种组合操作常见于树形结构的统计分析场景,比如DOM树的渲染优化、文件系统的空间分析等。
后序遍历(Post-order Traversal)是指按照"左子树-右子树-根节点"的顺序访问二叉树节点。这种遍历方式的特点是:当访问某个节点时,其所有子节点都已被处理完毕。与之相对的深度计算,则是指从当前节点到最远叶子节点的路径长度。
关键特性:后序遍历天然适合自底向上的计算场景,因为子节点的信息在访问父节点时已经准备就绪。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 算法实现与深度计算
2.1 基础递归解法
最直观的实现方式是递归法,时间复杂度O(n),空间复杂度O(h)(h为树高):
python复制class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def postorder_with_depth(root):
def dfs(node):
if not node:
return 0, 0 # (depth, node_count)
left_depth, left_count = dfs(node.left)
right_depth, right_count = dfs(node.right)
current_depth = max(left_depth, right_depth) + 1
total_nodes = left_count + right_count + 1
print(f"节点 {node.val}: 深度={current_depth}")
return current_depth, total_nodes
return dfs(root)
这个实现有几个值得注意的细节:
- 递归
