题目描述
从上到下按层打印二叉树,同一层的结点按从左到右的顺序打印,每一层打印到一行。
样例
输入如下图所示二叉树[8, 12, 2, null, null, 6, null, 4, null, null, null]
8
/ \
12 2
/
6
/
4
输出:[[8], [12, 2], [6], [4]]
golang 代码
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func printFromTopToBottom(root *TreeNode) [][]int {
if root == nil {
return nil
}
//返回值
var ans [][]int
var a []int
//队列,初始放入root节点
var temp = []*TreeNode{root}
//每一个nil都是一层
temp = append(temp,nil)
for {
//非nil同一层,写入临时silce
if temp[0] != nil {
a = append(a,temp[0].Val)
if temp[0].Left != nil {
temp = append(temp,temp[0].Left)
}
if temp[0].Right != nil {
temp = append(temp,temp[0].Right)
}
//nil,不同层
} else {
ans = append(ans,a)
a = nil
//队列不为仅剩空元素
if len(temp) != 1 {
temp = append(temp,nil)
} else {
break
}
}
temp = temp[1:]
}
return ans
}