鱼C论坛

 找回密码
 立即注册
查看: 1907|回复: 0

[技术交流] C++刷leetcode(429. N叉树的层序遍历)【广度优先搜索】

[复制链接]
发表于 2020-5-29 19:01:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目描述:
  1. 给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。

  2. 例如,给定一个 3叉树 :

  3.  



  4.  

  5. 返回其层序遍历:

  6. [
  7.      [1],
  8.      [3,2,4],
  9.      [5,6]
  10. ]
  11.  

  12. 说明:

  13. 树的深度不会超过 1000。
  14. 树的节点总数不会超过 5000。

  15. 来源:力扣(LeetCode)
  16. 链接:https://leetcode-cn.com/problems/n-ary-tree-level-order-traversal
  17. 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
复制代码


  1. /*
  2. // Definition for a Node.
  3. class Node {
  4. public:
  5.     int val;
  6.     vector<Node*> children;

  7.     Node() {}

  8.     Node(int _val) {
  9.         val = _val;
  10.     }

  11.     Node(int _val, vector<Node*> _children) {
  12.         val = _val;
  13.         children = _children;
  14.     }
  15. };
  16. */

  17. class Solution {
  18. public:
  19.     vector<vector<int>> levelOrder(Node* root) {
  20.         vector<vector<int> > res;
  21.         if(root == NULL) return res;
  22.         queue<Node*> store;
  23.         store.push(root);
  24.         while(!store.empty()){
  25.             int len = store.size();
  26.             vector<int> temp1;
  27.             for(int i = 0; i < len; i++){
  28.                 Node* temp2 = store.front();
  29.                 store.pop();
  30.                 temp1.push_back(temp2 -> val);
  31.                 int len2 = temp2 -> children.size();
  32.                 for(int j = 0; j < len2; j++){
  33.                     store.push(temp2 -> children[j]);
  34.                 }
  35.             }
  36.             res.push_back(temp1);
  37.         }
  38.         return res;
  39.     }
  40. };
复制代码

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-16 17:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表