429. N 叉树的层序遍历(中)

题目

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

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

python

题解:BFS

class Solution:
    def levelOrder(self, root: 'Node') -> List[List[int]]:
        if not root:
            return []
        res=[]# 存储最终的层次遍历结果
        q=[] #用列表做队列
        q.append(root)# 将根节点添加到队列中
        while q:
            size=len(q)
            res1=[]# 存储当前层的节点值
            for _ in range(size):
                cur=q.pop(0)#取对头的结点
                res1.append(cur.val)#加入当前层的列表里
                if cur.children:# 将当前节点的子节点添加到队列中
                    q.extend(cur.children)
            res.append(res1)#每一层的列表加到最终结果列表里 
        return res

javascript

题解:层序遍历

var levelOrder = function(root) {
    if(root===null) return []
    let res=[]
    let queue=[root]
    while(queue.length>0){
        let cur_list =[]
        let n =queue.length
        for (let i=0;i<n;i++){
            let cur_node = queue.shift()
            cur_list.push(cur_node.val)
            //遍历所有孩子,入队
            for(const child of cur_node.children){
                queue.push(child)
            } 
        }
        res.push(cur_list)
    }
    return res
};
posted @ 2023-12-22 20:33  Frommoon  阅读(17)  评论(0)    收藏  举报