package leetcode /** * Definition for a Node. * type Node struct { * Val int * Children []*Node * } */ type Node struct { Val int Children []*Node } func levelOrder(root *Node) [][]int { var res [][]int var temp []int if root == nil { return res } queue := []*Node{root, nil} for len(queue) > 1 { node := queue[0] queue = queue[1:] if node == nil { queue = append(queue, nil) res = append(res, temp) temp = []int{} } else { temp = append(temp, node.Val) if len(node.Children) > 0 { queue = append(queue, node.Children...) } } } res = append(res, temp) return res }