题目:
给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。
树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。
思路:
这个题目也是按层序遍历,只是一个节点可能有多个孩子,节点孩子的形式不再是left,right 而是 vector 来储存所有孩子。依旧是之前按层序遍历的方式,只不过在添加下一行的时候,是添加 当前节点的vector 里面的元素。
代码:
class Solution {
public:
vector<vector<int>> levelOrder(Node* root) {
queue<Node*>que;
if(root != NULL) que.push(root);
vector<vector<int>> result;
while(!que.empty()){
int size = que.size();
vector<int>v;
for(int i = 0; i < size; i++){
Node* node = que.front();
que.pop();
v.push_back(node->val);
for(int i = 0; i < node->children.size(); i++){
if(node->children[i]) que.push(node->children[i]);
}
}
result.push_back(v);
}
return result;
}
};

本文详细解析了如何使用C++实现N叉树的层序遍历,通过实例讲解了如何处理具有多个子节点的节点,并利用队列数据结构进行逐层遍历。代码中展示了如何将节点值存储在vector中并返回最终结果。

386

被折叠的 条评论
为什么被折叠?



