题目
给定一个二叉树,返回其按层次遍历的节点值。(即逐层地,从左到右访问所有节点)。
例如:
给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7返回其层次遍历结果:[[3],[9,20],[15,7]]
方案一(广度优先搜索)
/*** 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{}}ret := [][]int{}queue := []*TreeNode{root}depth := -1for len(queue) > 0 {depth += 1length := len(queue)ret = append(ret, make([]int, 0, length))for i := 0; i < length; i++ {node := queue[0]queue = queue[1:]ret[depth] = append(ret[depth], node.Val)if node.Left != nil {queue = append(queue, node.Left)}if node.Right != nil {queue = append(queue, node.Right)}}}return ret}
原文
https://leetcode-cn.com/explore/learn/card/data-structure-binary-tree/2/traverse-a-tree/9/
