给你二叉树的根节点
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
思路:利用队列 queue 先进先出的特性,按层次逐层遍历
时间复杂度:O(N)
空间复杂度:O(N)
/*** Definition for a binary tree node.* type TreeNode struct {* Val int* Left *TreeNode* Right *TreeNode* }*/funclevelOrder(root*TreeNode) [][]int { res :=make([][]int, 0) queue :=make([]*TreeNode, 0) ifroot!=nil { queue=append(queue, root) // 首先,根节点入队 } forlen(queue) >0 { subRes :=make([]int, 0) length :=len(queue) // 提前缓存上一轮queue大小,避免在内循环中append导致queue长度变化fori :=0; i<length; i++ { root :=queue[0] subRes=append(subRes, root.Val) queue=queue[1:] // popifroot.Left!=nil { queue=append(queue, root.Left) } ifroot.Right!=nil { queue=append(queue, root.Right) } } res=append(res, subRes) } returnres}