essay
hot100-二叉树的层序遍历
#算法
hot100——二叉树的层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]
示例 2:
输入:root = [1]
输出:[[1]]
示例 3:
输入:root = []
输出:[]
提示:
树中节点数目在范围 [0, 2000] 内
-1000 <= Node.val <= 1000
解法
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func levelOrder(root *TreeNode) [][]int {
if root == nil {
return [][]int{}
}
result := make([][]int, 0)
queue := []*TreeNode{root} // 初始化队列,加入根节点
for len(queue) > 0 {
levelSize := len(queue) // 当前层的节点数
level := make([]int, 0, levelSize)
for i := 0; i < levelSize; i++ {
// 出队
node := queue[0]
queue = queue[1:]
// 记录当前节点值
level = append(level, node.Val)
// 将左右子节点加入队列(下一层)
if node.Left != nil {
queue = append(queue, node.Left)
}
if node.Right != nil {
queue = append(queue, node.Right)
}
}
result = append(result, level)
}
return result
}