LeetCode 559 N叉树的最大深度[dfs bfs] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 559 N叉树的最大深度[dfs bfs] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。

解题思路:
一道非常简单的搜索题目,无论是dfs还是bfs都可以轻松解决,对于dfs,首先定义变量depth作为最大深度,然后从每个节点搜下去,一直到最后一个节点(最后一个节点通过有没有孩子判断),然后更新最大深度,代码如下:

/*
// Definition for a Node.
class Node 
public:
    int val;
    vector<Node*> children;

    Node() 

    Node(int _val) 
        val = _val;
    

    Node(int _val, vector<Node*> _children) 
        val = _val;
        children = _children;
    
;
*/

class Solution 
public:
    int depth = 0;
    int maxDepth(Node* root) 
        if(root == nullptr) 
            return 0;
        
        dfs(root, 1);
        return depth;
    

    void dfs(Node* root, int count) 
        if(root->children.size() == 0) 
            depth = max(depth, count);
            return;
        
        for(auto child : root->children) 
            dfs(child, count + 1);
        
    
;

bfs的方法也是很简单,就是逐层遍历呗,不断放入队列中,直到队列中没有节点了,返回最大深度,代码如下:

/*
// Definition for a Node.
class Node 
public:
    int val;
    vector<Node*> children;

    Node() 

    Node(int _val) 
        val = _val;
    

    Node(int _val, vector<Node*> _children) 
        val = _val;
        children = _children;
    
;
*/

class Solution 
public:
    int maxDepth(Node* root) 
        if(root == nullptr) 
            return 0;
        
        int depth = 0;
        queue<Node*> q;
        q.push(root);
        while(!q.empty()) 
            int len = q.size();
            for(int i = 0; i < len; i ++) 
                Node* node = q.front();
                q.pop();
                for(auto& child : node->children) 
                    q.push(child);
                
            
            depth ++;
        
        return depth;
    
;

最后再说一下这道题目本身,就是套用最简单的bfs和dfs的模板去写,没有一点难度,可以当做不是特别熟练这种类型题目的同学的入门题,也可以给那些老手练练手,所以这次两种方法我都写了,仅供大家参考。

以上是关于LeetCode 559 N叉树的最大深度[dfs bfs] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

559.N叉树的最大深度(LeetCode)

LeetCode:N叉树的最大深度559

LeetCode Algorithm 559. N 叉树的最大深度

LeetCode Algorithm 559. N 叉树的最大深度

LeetCode559 N叉树的最大深度

leetcode559 Python3 128ms N叉树的最大深度