1.题目
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3/ \9 20/ \15 7
返回它的最大深度 3
2.思路
还是递归方法,关键是要找到递归的点:
当我们传入一个树时,我们先判断该树是否为null,我们把根节点的子节点也看做是树,就很好理解了,当当前的树为null时,返回0,若不为null接着遍历左树与右树,直到遍历到最深,然后开始依次返回,然后取左遍的最大深度与右边的最大深度的最大值,然后加上父节点的深度1,遍历完整棵树即为最后答案。
public int maxDepth(TreeNode root) {
if (root == null) {
return 0;
} else {
int leftHeight = maxDepth(root.left);
int rightHeight = maxDepth(root.right);
return Math.max(leftHeight, rightHeight) + 1;
}
}
