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 }