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之路的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode Algorithm 559. N 叉树的最大深度