package main
import . "nc_tools"
import ("container/list")
/*
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param root TreeNode类
* @return int整型一维数组
*/
func PrintFromTopToBottom( root *TreeNode ) []int {
// write code here
// 特殊条件判断
if root == nil {
return nil
}
// 使用 golang 提供的双向链表模拟队列的使用
q := list.New()
// q := *list.List{}
q.PushBack(root)
ans := []int{}
for q.Len() > 0 {
size := q.Len()
for size > 0 {
node := q.Remove(q.Front()).(*TreeNode)
ans = append(ans, node.Val)
if node.Left != nil {
q.PushBack(node.Left)
}
if node.Right != nil {
q.PushBack(node.Right)
}
size--
}
}
return ans
}