104. 二叉树的最大深度

题解:
思路一:

使用递归, node节点的高度等于其 max(node.left, node.right) + 1 左右孩子的高度中的较大者 + 1. 代码如下:

1
2
3
4
5
    public int maxDepth(TreeNode root){
        if (root == null) return 0;
        
        return Math.max(maxDepth(root.left),maxDepth(root.right)) + 1;
    }
思路二:

迭代, 类似层序遍历,当一层遍历完时,height ++ . 直到遍历完所有节点

代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public int maxDepth(TreeNode root) {
        if (root == null) return 0;

        Queue <TreeNode> queue = new LinkedList<>();
        queue.add(root);
        TreeNode node = root;

        int height = 0;
        while (!queue.isEmpty()){
            int size = queue.size();
            while (size > 0){

                node = queue.remove();
                if (node.left != null) queue.add(node.left);
                if (node.right != null) queue.add(node.right);

                size --;
            }

            height ++;
        }

        return height;
    }