LeetCode 第559题:N叉树的最大深度

1、前言

题目描述

2、思路

此题可以用 DFS 跟 BFS 来做。N 叉树的最大深度跟二叉树的最大深度求解很类似,代码完全可以套过来。

3、代码

DFS:

/*
// Definition for a Node.
class Node {
    public int val;
    public List children;

    public Node() {}

    public Node(int _val) {
        val = _val;
    }

    public Node(int _val, List _children) {
        val = _val;
        children = _children;
    }
};
*/

class Solution {
    public int maxDepth(Node root) {
        if(root == null){
            return 0;
        }
        List list = root.children;
        if(list == null || list.size() == 0){
            return 1;
        }

        int max = 0;
        for(int i = 0; i < list.size(); i++){
            Node cur = list.get(i);
            max = Math.max(max, maxDepth(cur));
        }

        return max + 1;
    }
}

BFS:

/*
// Definition for a Node.
class Node {
    public int val;
    public List children;

    public Node() {}

    public Node(int _val) {
        val = _val;
    }

    public Node(int _val, List _children) {
        val = _val;
        children = _children;
    }
};
*/

class Solution {

    public int maxDepth(Node root) {
        if(root == null){
            return 0;
        }

        Queue queue = new LinkedList<>();
        queue.offer(root);
        int depth = 0;

        while(!queue.isEmpty()){
            int size = queue.size();
            for(int i = 0; i < size; i++){
                Node cur = queue.poll();
                if(cur.children != null){
                    for(Node n : cur.children){
                        queue.offer(n);
                    }
                }
            }
            depth++;
        }

        return depth;
    }
}

你可能感兴趣的:(LeetCode 第559题:N叉树的最大深度)