原始题目:剑指 Offer 55 - I. 二叉树的深度 (opens new window)
解题思路:
实际上是一个后序遍历,拿到左右子树中的较大深度,然后加1返回。
递归函数:
- **递归参数:**根节点 。
- 终止条件: 为 时,直接返回。
- 递推工作:
- 递归计算左子树的深度 ;
- 递归计算右子树的深度 ;
- 比较 和 ,选择较大者然后加一返回。
代码:
public int maxDepth(TreeNode root) {
if(root == null) {
return 0;
}
int left = maxDepth(root.left);
int right = maxDepth(root.right);
return Math.max(left, right) + 1;
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
复杂度分析:
- 时间复杂度: 为树节点的个数,计算深度需要遍历所有的节点。
- 空间复杂度:最长情况下,需要进行 次递归,需要栈空间为 。