mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-07-24 02:14:00 +08:00
40 lines
632 B
Go
40 lines
632 B
Go
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
|
|
}
|