• 0429-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]]

    提示:

    树的高度不会超过 1000
    树的节点总数在 [0, 10^4] 之间

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/n-ary-tree-level-order-traversal

    python

    # 0429.N叉树的层序遍历
    class Solution:
        def levelOrder(self, root: Node) -> [[int]]:
            """
            迭代法:双端队列,每次把单层的节点遍历出队列,另外将对应的children节点加入队列
            :param root:
            :return:
            """
            results = []
            if not root:
                return results
    
            from collections import deque
            queue = deque([root]) # 初始化队列
    
            while queue:
                size = len(queue) # 遍历队列单层长度
                res = [] # 每次遍历时初始化加入结果集中的列表
                for _ in range(size):
                    cur = queue.popleft() # 通过size控制遍历次数
                    res.append(cur.val) # 加入结果集中
                    if cur.children: # 扩展到子节点
                        queue.extend(cur.children)
                results.append(res) # 当层中的所有节点的值放入list中
    
            return results
    

    golang

    package binaryTree
    
    import "container/list"
    
    type Node struct {
    	Val int
    	Children []int
    }
    
    // 迭代遍历
    func levelOrder(root *Node) [][]int {
    	var res = [][]int{}
    	if root == nil { // 空时返回
    		return res
    	}
    	queue := list.New() // 队列初始化
    	queue.PushBack(root)
    
    	for queue.Len() > 0 {
    		length := queue.Len()
    		var tmpArr []int
    		for i := 0; i < length; i++ { // 遍历当层的节点
    			node := queue.Remove(queue.Front()).(*Node) // 当次节点
    			tmpArr = append(tmpArr, node.Val) // 节点值加入结果集
    			// 子节点群加入队列中
    			for i:=0;i<len(node.Children);i++ {
    				queue.PushBack(node.Children[i])
    			}
    		}
    		res = append(res, tmpArr)
    	}
    	return res
    }
    
    
  • 相关阅读:
    MYSQL设置允许所有访问
    解决ios端的H5,input有阴影的问题
    linux查看某个时间段的日志(sed -n)
    centos如何创建自启动脚本
    laravel做数据迁移的时候进行表的注释
    taro编译微信小程序,报错“未找到setmap.json文件”
    java百科常识
    spring自动装配
    top命令内容详解
    jemter 随机取数组里面的值放入请求
  • 原文地址:https://www.cnblogs.com/davis12/p/15550124.html
Copyright © 2020-2023  润新知