20250124_深度优先遍历问题
深度优先遍历问题
问题描述
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
解题思路
基本概念
- 二叉树的深度是从根节点到最远叶子节点的路径上的节点数
- 叶子节点是指没有子节点的节点
- 空节点的深度为 0
递归思路
- 一个节点的最大深度 = max(左子树深度, 右子树深度) + 1
- 递归的终止条件:当节点为空时,返回 0
DFS(深度优先搜索)过程
1
2
3
4
5
6对于每个节点:
├── 如果节点为空
│ └── 返回 0
├── 递归计算左子树的深度
├── 递归计算右子树的深度
└── 返回 max(左子树深度, 右子树深度) + 1示例分析
1
2
3
4
5
6
7
8
9
10
11
12
13
14例如对于树:
3
/ \
9 20
/ \
15 7
计算过程:
1. 节点3的深度 = max(节点9的深度, 节点20的深度) + 1
2. 节点9的深度 = max(0, 0) + 1 = 1
3. 节点20的深度 = max(节点15的深度, 节点7的深度) + 1
4. 节点15和7的深度都是 1
5. 所以节点20的深度是 2
6. 最终树的深度 = max(1, 2) + 1 = 3复杂度分析
- 时间复杂度:O(n),其中 n 是节点数量
- 空间复杂度:O(h),其中 h 是树的高度,最坏情况下为 O(n)
代码实现
1 | class Solution: |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Never Settle!
评论