题目描述
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
解题代码
// 逐层打印 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 }
提交结果