102. 二叉树的层序遍历
1 队列不外乎就是出队的和入队的处理逻辑,理解了这个就迎刃而解了
2 入队就是当前层里元素的所有下一层的元素都需要入队,也就是他们的子节点入队
3 在对当前层遍历做子节点入队的时候,捎带把当前的层元素做了遍历,就这么简单的
4 出队就是把当前这层的元素都出队就可以了
package main
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func levelOrder(root *TreeNode) [][]int {
var res [][]int
if root == nil {
return res
}
queue := make([]*TreeNode, 0)
queue = append(queue, root)
for len(queue) > 0 {
l := len(queue)
ans := make([]int, 0)
for i := 0; i < len(queue); i++ {
node := queue[i]
ans = append(ans, node.Val)
if node.Left != nil {
queue = append(queue, node.Left)
}
if node.Right != nil {
queue = append(queue, node.Right)
}
}
res = append(res, ans)
queue = queue[l:]
}
return res
}
func main() {
}