429. 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] 之间
解题思路
与二叉树的层序完全一样的讨论,借助一个队列即可完成
Go代码
/**
* Definition for a Node.
* type Node struct {
* Val int
* Children []*Node
* }
*/
func levelOrder(root *Node) [][]int {
// 思路和102题二叉树的层序遍历是一模一样的
if root == nil {
return [][]int{}
}
res := make([][]int,0)
queue := make([]*Node,0)
queue = append(queue,root)
for len(queue) > 0 {
curLevelRes := make([]int,0)
queueSize := len(queue)
for i := 0;i < queueSize;i++ {
curNode := queue[0]
queue = queue[1:]
curLevelRes = append(curLevelRes,curNode.Val)
// 下一层,与二叉树层序遍历的唯一区别
for j := 0;j < len(curNode.Children);j++{
queue = append(queue,curNode.Children[j])
}
}
res = append(res,curLevelRes)
}
return res
}

282

被折叠的 条评论
为什么被折叠?



