102. 二叉树的层序遍历

1 队列不外乎就是出队的和入队的处理逻辑,理解了这个就迎刃而解了
2 入队就是当前层里元素的所有下一层的元素都需要入队,也就是他们的子节点入队
3 在对当前层遍历做子节点入队的时候,捎带把当前的层元素做了遍历,就这么简单的
4 出队就是把当前这层的元素都出队就可以了
package maintype TreeNode struct {Val intLeft *TreeNodeRight *TreeNode}func levelOrder(root *TreeNode) [][]int {var res [][]intif 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() {}

