这是树的第28篇算法,力扣链接。
给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。
树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。
示例 1:
输入:root = [1,null,3,2,4,null,5,6] 输出:[[1],[3,2,4],[5,6]]
还是普通的层级遍历的逻辑,只不过左右指针换成了数组:
func levelOrder(root *Node) [][]int {
var result [][]int
if root == nil {
return result
}
stack := []*Node{root}
for len(stack) > 0 {
var newStack []*Node
var subResult []int
for _, node := range stack {
subResult = append(subResult, node.Val)
for _, cd := range node.Children {
newStack = append(newStack, cd)
}
}
result = append(result, subResult)
stack = newStack
}
return result
}