# [LeetCode 429. N-ary Tree Level Order Traversal ](https://leetcode.com/explore/challenge/card/august-leetcoding-challenge-2021/613/week-1-august-1st-august-7th/3871/) ### Daily challenge Aug 6, 2021 (MEDAIN) >Given an n-ary tree, return the level order traversal of its nodes' values. > >Nary-Tree input serialization is represented in their level order traversal, each group of children is separated by the null value (See examples). ![](https://i.imgur.com/fERUWjV.png) :::info **Example 1:** **Input:** root = [1,null,3,2,4,null,5,6] **Output:** [[1],[3,2,4],[5,6]] ::: ![](https://i.imgur.com/XmQs79B.png) :::info **Example 2:** **Input:** root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14] **Output:** [[1],[2,3,4,5],[6,7,8,9,10],[11,12,13],[14]] ::: :::warning **Constraints:** * The height of the n-ary tree is less than or equal to 1000 * The total number of nodes is between [0, 104] ::: --- ### Approach 1 : queue **` 24ms ( 52.46% )`** **`O()`** * **`size`** 表示當前 `level` 的 `node` 數量。 **`queue<Node*> order`** 用來紀錄每層 `level` 的 `node`。 **`vector<int> list`** 紀錄當前 `level` 的 `node->val`。 1. 從 `order` 中 `pop` 出元素 `size` 次 ( 遍歷所有當前 `level` 的 `node` ), 同時將 `node->val` 存入 `list`。 2. 再將當前 `node` 內的所有 `children` 存入 `order` 中。 3. 重複直到 `order` 為空。 ```cpp=1 class Solution { public: vector<vector<int>> levelOrder(Node* root) { vector<vector<int>> ans; if(root == NULL) return ans; queue<Node*> order; order.push(root); while(!order.empty()){ int size = order.size(); vector<int> list; for(int i=0; i<size; i++){ Node* cur_node = order.front(); order.pop(); list.push_back(cur_node->val); for(auto child : cur_node->children){ order.push(child); } } ans.push_back(list); } return ans; } }; /* // 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; } }; */ ```