Talk is cheap.
func printFromTopToBottom(root *TreeNode) []int {
res := []int{}
if root != nil {
level := []*TreeNode{root}
for len(level) != 0 {
for _, v := range level {
res = append(res, v.Val)
}
tmp := []*TreeNode{}
for _, v := range level {
if v.Left != nil {
tmp = append(tmp, v.Left)
}
if v.Right != nil {
tmp = append(tmp, v.Right)
}
}
level = tmp
}
}
return res
}