做网站空间重要还是程序重要,知名seo网站优化公司,做个外贸网站,湖北建设厅网站查询题目讲解
429. N 叉树的层序遍历 算法讲解
在做层序遍历的时候由于它的每一个结点是有val vector child组成#xff0c;所以在做层序遍历的时候需要考虑它每一层结点的个数#xff0c;那我们就可以使用一个queue保存每一层的结点#xff1b;那么我们在做第一层的时候 vector child组成所以在做层序遍历的时候需要考虑它每一层结点的个数那我们就可以使用一个queue保存每一层的结点那么我们在做第一层的时候这样很简单第一层用完怎么做呢我们在准备第二层结点的时候就需要将第一层结点提取出来然后将第一层节点pop出去现在的时候第一层的vector ret已经出现的但是我们queue还是没有处理的所以在添加当前节点的val之后就需要遍历结点的child vector将它的下一层结点放到queue中这样的话每一层的结点就会出现在queue中
/*
// Definition for a Node.
class Node {
public:int val;vectorNode* children;Node() {}Node(int _val) {val _val;}Node(int _val, vectorNode* _children) {val _val;children _children;}
};
*/class Solution {
public:vectorvectorint levelOrder(Node* root) {int levesize 0;queueNode*q;vectorvectorintret;if(root nullptr)return ret;q.push(root);while(!q.empty()){levesize q.size();vectorint temp;for(int i 0; i levesize; i){Node* cur q.front();q.pop();temp.push_back(cur-val);for(Node* child : cur-children){q.push(child);}}ret.push_back(temp);}return ret;}
};