1.题目

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例:
给定二叉树 [3,9,20,null,null,15,7],

  1. 3
  2. / \
  3. 9 20
  4. / \
  5. 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;
        }
    }