package main
import "fmt"
func main () {
//JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。
fmt.Println("Hello JSRUN! \n\n - from Golang .")
}
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func levelOrder(root *TreeNode) [][]int {
ans := [][]int {{}} // 存储二叉树的节点
if root == nil {
return ans
}
var deep int
queue := []*TreeNode {root} // 存储二叉树的父节点
for len(queue) > 0 { // 遍历队列
ans = append(ans, []int {}) // 将新一层的节点数组加入ans
length := len(queue)
for length > 0 { // 遍历该层节点
length--
ans[deep] = append(ans[deep], queue[0].Val) // 将遍历到的节点加入ans[deep]
if queue[0].Left != nil { // 如果该节点的左节点不为空
queue = append(queue, queue[0].Left) // 将左节点加入父节点队列
}
if queue[0].Right != nil { // 如果该节点的右节点不为空
queue = append(queue, queue[0].Right) // 将右节点加入父节点队列
queue = queue[1:] // 将父节点从父节点队列中移除
}
}
// 该层节点遍历完成
deep++ // 准备进行下一层节点的处理
}
return ans
}