题目描述
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
例如:
给定二叉树 [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 { |