题目:

104. 二叉树的最大深度

题解:



代码:

/** * code104 */
public class code104 {

    public static int maxDepth(TreeNode root) {
        // 递归退出条件,到叶子节点
        if (root == null) {
            return 0;
        }
        // 计算左子树最大深度
        int leftMaxDepth = maxDepth(root.left);
        // 计算右子树最大深度
        int rightMaxDepth = maxDepth(root.right);
        // 以某个节点为根节点的数的最大深度为Max
        // Max = max(leftMaxDepth,rightMaxDepth)+1
        return Math.max(leftMaxDepth, rightMaxDepth) + 1;
        // 以上可合并为:
        // return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
    }

    public static void main(String[] args) {
        System.out.println("***************************************");
        Integer nums[] = { 3, 9, 20, null, null, 15, 7 };
        TreeNode tree = ConstructTree.constructTree(nums);
        TreeOperation.show(tree);
        System.out.println("***************************************");
        int count = maxDepth(tree);
        System.out.println("该二叉树的最大深度为: " + count);
        System.out.println("***************************************");
    }
}

参考:

  1. 二叉树的最大深度
  2. 漫画:绝对能看懂的DFS题解
  3. 使用递归解决
  4. java实现,三种方法,递归实现、迭代实现(DFS、BFS)
  5. 图解 104. 二叉树的最大深度 | 递归/Python/Golang 详细解答