559. N叉树的最大深度

题解:
思路一:

递归,非常容易想的思路,父节点的深度,等于其子节点中最大深度再加一。 代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    public int maxDepth(Node root) {
        if (root == null) return 0;
        
        int max = 1;
        for (int i = 0; i < root.children.size(); i++) {
            max = Math.max(max,maxDepth(root.children.get(i)) + 1);
        }

        return max;
    }
思路二:

迭代,利用树的层序遍历,遍历完一层时,高度+1, 直到遍历完整棵树。代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// 迭代 层序遍历
    public int maxDepth(Node root) {
        if (root == null) return 0;

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

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

            while (size > 0){
                node = queue.remove();

                for (int i = 0; i < node.children.size(); i++) {
                    queue.add(node.children.get(i));
                }

                size --;
            }

            height ++;
        }

        return height;
    }