leetcode-429:N 叉树的层序遍历

简介: leetcode-429:N 叉树的层序遍历

题目

题目链接

给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。

树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。

示例 1:

输入:root = [1,null,3,2,4,null,5,6]
输出:[[1],[3,2,4],[5,6]]

示例 2:

输入: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]
输出:[[1],[2,3,4,5],[6,7,8,9,10],[11,12,13],[14]]

解题

children是以列表的形式存储每个节点的

python写法

"""
# Definition for a Node.
class Node:
    def __init__(self, val=None, children=None):
        self.val = val
        self.children = children
"""
class Solution:
    def levelOrder(self, root: 'Node') -> List[List[int]]:
        if not root:
            return []
        res = []
        queue = [root]
        while queue:
            l = len(queue)
            tmp = []
            for _ in range(l):
                cur = queue.pop(0)
                tmp.append(cur.val)
                for child in cur.children: # 修改的部分
                    if child:
                        queue.append(child)
            res.append(tmp)
        return res

c++写法

/*
// 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;
    }
};
*/
class Solution {
public:
    vector<vector<int>> levelOrder(Node* root) {
        if(!root) return {};
        vector<vector<int>> res;
        queue<Node*> queue;
        queue.push(root);
        while(!queue.empty()){
            int l=queue.size();
            vector<int> tmp;
            for(int i=0;i<l;i++){
                Node* cur=queue.front();
                queue.pop();
                tmp.push_back(cur->val);
                for(Node* child:cur->children){
                    if(child) queue.push(child);
                }
            }
            res.push_back(tmp);
        }
        return res;
    }
};


相关文章
|
3月前
|
Go
golang力扣leetcode 675.为高尔夫比赛砍树
golang力扣leetcode 675.为高尔夫比赛砍树
29 0
|
3月前
leetcode-SQL-608. 树节点
leetcode-SQL-608. 树节点
18 0
|
3月前
|
Java
leetcode-559:N 叉树的最大深度
leetcode-559:N 叉树的最大深度
19 0
|
3月前
leetcode-590:N 叉树的后序遍历
leetcode-590:N 叉树的后序遍历
25 0
|
3月前
leetcode-589:N 叉树的前序遍历
leetcode-589:N 叉树的前序遍历
15 0
leetcode-589:N 叉树的前序遍历
|
3月前
|
C++ Python
leetcode-513:找树左下角的值
leetcode-513:找树左下角的值
20 0
|
3月前
|
C++ Python
leetcode-572:另一棵树的子树
leetcode-572:另一棵树的子树
24 0
|
3月前
|
C++ Python 容器
leetcode-515:在每个树行中找最大值
leetcode-515:在每个树行中找最大值
16 0
|
3月前
|
Java C++ Python
leetcode-538:把二叉搜索树转换为累加树
leetcode-538:把二叉搜索树转换为累加树
22 0
|
10天前
|
算法 DataX
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”