还是一道BFS的简单题,因为我菜 这题和昨天的二叉树深度异曲同工,就是在遍历子节点时有点点差别。然而我实在太菜了,就这点点差别,我就不会了,然后我也是看了题解区大佬们的题解,然后问了大佬之后,还是不会用自己的方式写出来,那就直接贴题贴代码吧
图片截自LeetCode
/*
// 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) {
queue<Node*> q;
int depth=0;
if(root!=NULL)
q.push(root);
while(!q.empty())
{
for(int i=q.size()-1;i>=0;i--)
{
Node* temp=q.front();
q.pop();
for (Node* it : temp->children)
q.push(it);
}
depth++;
}
return depth;
}
};
这就是那一点点的差别
for (Node* it : temp->children)
q.push(it);
因为本人实在是太菜太菜,然会问了大佬这是什么意思,然后大佬说就是遍历temp节点的子节点,并入队列。然后我个人理解像是定义一个指针访问temp节点的子节点。如果理解错了,欢迎路过的大佬们指正