N叉树的层序遍历
N叉树为多个子节点的树
class Node { public: int val; vector<Node*> children; //子节点为vector Node() {} Node(int _val) { val = _val; } Node(int _val, vector<Node*> _children) { val = _val; children = _children; } };
class Solution { public: vector<vector<int>> levelOrder(Node* root) { vector<vector<int>> result; Node* node ; //迭代节点 queue<Node*> my_que; //队列 if(root == nullptr) return result; else // 根节点进队列 { my_que.push(root); } while(my_que.empty() != 1) { int size = my_que.size(); //size是不断变化的,指每一层级的点数量 vector<int> nums;//每一层级存放的点 //将每一层的点从队列弹出放入nums,并且下一个层级点放入队列 for(int i=0 ; i<size ; i++) { node = my_que.front(); //该层级的点弹出放入数组 my_que.pop(); nums.push_back(node->val); //每一个弹出点的下一个层级左右节点压入队列 for(int j=0 ; j < node->children.size() ;j++) { if(node->children[j] != nullptr) my_que.push(node->children[j]); } } result.push_back(nums); } return result; } };