559. N 叉树的最大深度

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

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

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

示例 1:

559. N 叉树的最大深度_第1张图片

输入:root = [1,null,3,2,4,null,5,6]
输出:3

示例 2:

559. N 叉树的最大深度_第2张图片

输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
输出:5
class Solution {
public:
    int maxDepth(Node* root) {
        //层序遍历
        queueque;
        int count = 0;
        if(!root) return count;
        que.push(root);
        while(!que.empty()){
            int num =  que.size();
            count++;
            while(num--){
                Node* node = que.front();
                que.pop();
                for(int i = 0;i < node->children.size();i++){
                    if(node->children[i])que.push(node->children[i]);
                } 
            }
        }
        return count;
    }
};

//dfs
class Solution {
public:
    int dfs(Node* root){
        if(!root) return 0;
        int res = 0;
        for(int i = 0;i < root->children.size();i++){
            res = max(res,dfs(root->children[i]));
        }
        return res+1;
    }
    int maxDepth(Node* root) {
        //dfs
        return dfs(root);
    }
};

你可能感兴趣的:(leetcode练习,数据结构,c++,算法)