该题目来源于牛客网《剑指offer》专题。
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
不需分层,一维数组。
Go语言实现:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func levelOrder(root *TreeNode) []int {
var result []int
if root == nil {
return result
}
//初始化一个队列
list := list.New()
//从头部插入root
list.PushFront(root)
//开始层次遍历,即广度优先遍历
for list.Len() > 0 {
//取本层的节点数
curentLenth := list.Len()
for i := 0; i < curentLenth; i++ {
//从尾部移除,Remove返回值为接口类型,需指定为TreeNode
node := list.Remove(list.Back()).(*TreeNode)
result = append(result, node.Val)
if node.Left != nil {
list.PushFront(node.Left)
}
if node.Right != nil {
list.PushFront(node.Right)
}
}
}
return result
}