【树】【打卡100天】leetCode每日一题:559. N 叉树的最大深度

1、题目描述

给定一个 N 叉树,找到其最大深度。

最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。

N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。

2、算法分析

大家应该做过二叉树的最大深度。也是使用的是Math.max()

Math.max(deep(root.left),deep(root.right)) + 1;

注意:Node的数据结构代码,它有孩子结点。

class Node {
    public int val;
    public List<Node> children;

    public Node() {}

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

    public Node(int _val, List<Node> _children) {
        val = _val;
        children = _children;
    }
};

 本题是N叉树的最大深度,使用DFS。

遍历每一个children。使用Math.max()

最后别忘记 +1,算上根结点。

for(Node node :root.children){
     deep = Math.max(deep,maxDepth(node));
}

3、代码实现

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

    public Node() {}

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

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

class Solution {
    public int maxDepth(Node root) {
        if(root == null){
            return 0;
        }
        int deep = 0;
        if(root.children != null){
            for(Node node :root.children){
                deep = Math.max(deep,maxDepth(node));
            }
        }
        return deep + 1;
    }
}

DFS:

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

    public Node() {}

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

    public Node(int _val, List<Node> _children) {
        val = _val;
        children = _children;
    }
};
*/
// BFS:层次遍历
class Solution {
    public int maxDepth(Node root) {
        if(root == null){
            return 0;
        }
        Queue<Node> queue = new LinkedList<Node>();
        queue.offer(root);
        int count = 0;
        while(!queue.isEmpty()){
            // 返回每层的元素个数,
            int size = queue.size();
            // 遍历每一层
            while(size > 0){
                Node node = queue.poll();
                List<Node> children = node.children;
                // 遍历List集合,每一层孩子
                for(Node child:children){
                    queue.offer(child);
                }
                size--;
            }
            count++;
        }
        return count;
    }
}

Guess you like

Origin blog.csdn.net/Sunshineoe/article/details/121460943