题目描述
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
例如:
给定二叉树 [3,9,20,null,null,15,7],
1  | 3  | 
题解
BFS
之前做层序遍历的相关题目时有记录过当前遍历所在层数, 那么直接把这个值拿来用就是最大的深度了
1  | public int maxDepth(TreeNode root) {  | 
DFS
关键点: ** 树的深度和其左右子树的深度之间有着重要关系. 显然, **此树的深度 等于 左子树深度 与 右子树深度 中的 最大值 +1

- 终止条件: 当 
root为空,说明已越过叶节点,因此返回 深度 0 。 - *递归过程: * 本质上是对树做后序遍历
- 计算节点 
root的 左子树的深度 ,即调用maxDepth(root.left) - 计算节点 
root的 右子树的深度 ,即调用maxDepth(root.right) 
 - 计算节点 
 - 返回值: 返回 此树的深度 ,即 
max(maxDepth(root.left), maxDepth(root.right)) + 1。 










1  | class Solution {  |