《LeetCode之每日一题》:214.N 叉树的最大深度
Posted 是七喜呀!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《LeetCode之每日一题》:214.N 叉树的最大深度相关的知识,希望对你有一定的参考价值。
题目链接: N 叉树的最大深度
有关题目
给定一个 N 叉树,找到其最大深度。
最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。
N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。
提示:
树的深度不会超过 1000 。
树的节点数目位于 [0, 10^4] 之间。
题解
法一:深度优先搜索(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;
vector<Node *> children = root->children;//拿到当前节点的所有子树
int maxChildDepth = 0;//存放当前节点中所有子树中最大深度
//找出所有子树中最大深度
for (auto &child : children)
int childDepth = maxDepth(child);
maxChildDepth = max(maxChildDepth, childDepth);
return maxChildDepth + 1;//当前节点的最大深度
;
法二:广度优先搜索
参考官方题解
/*
// 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;
queue<Node *> q;//优先搜索队列
int ans = 0;
q.push(root);
while(!q.empty())
//一层一层从队列中拿出节点
int sz = q.size();
while(sz > 0)
Node *node = q.front(); q.pop();
vector<Node *> children = node->children;//将node下的所有子树记录
for (auto &child : children)
q.push(child);
sz--;
ans++;
return ans;
;
以上是关于《LeetCode之每日一题》:214.N 叉树的最大深度的主要内容,如果未能解决你的问题,请参考以下文章