一、题目描述
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点最长路径上的节点数。
二、理解题意
二叉树最大深度:该二叉树所有深度的最大值。
三、Choose 数据结构及算法思维选择
DFS(递归)
- BFS是横向遍历每一个节点,需要O(n)的空间复杂度
- DFS将会纵向遍历节点,在遍历每个节点时,即可得到当前节点至根节点的深度,无需存储
四、代码实现
// 递归三要素
// 1)确定函数等价关系式(参数,返回值)。参数是传入树的根节点,返回值是树的深度
public int maxDepth(TreeNode root) {
// 2)确定结束条件。如果节点为空,返回0
// 且此处可以处理二叉树为空的corner case
if(root == null) { return 0; }
// 3)函数主功能。分别求左右子树最大深度,返回左右子树深度最大值 + 1
// 即为当前节点为根节点的树的最大深度
int leftTreeDepth=maxDepth(root.left);
int rightTreeDepth=maxDepth(root.right);
return Math.max(leftTreeDepth,rightTreeDepth)+1
}