题目描述
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
解题代码
// 逐层打印
func levelOrder(root *TreeNode) [][]int {
var sum [][]int
queue := list.New()
if root != nil {
// 将根节点入队
queue.PushBack(root)
}
for queue.Len() != 0 {
var tem []int
size := queue.Len()
// 每层需要出站的个数
for ; size >0 ; size-- {
// 获取头结点
e := queue.Front()
tre := e.Value.(*TreeNode)
tem = append(tem, tre.Val)
// 移除头结点
queue.Remove(e)
// 将节点的左右节点入队
if tre.Left != nil {
queue.PushBack(tre.Left)
}
if tre.Right != nil {
queue.PushBack(tre.Right)
}
}
sum = append(sum, tem)
}
return sum
}