5.二叉树的层序遍历-广度优先搜索法

package main

type TreeNode struct {
	Val   int
	Left  *TreeNode
	Right *TreeNode
}

// @solution-sync:begin
func levelOrder(root *TreeNode) [][]int {
	result := make([][]int, 0)
	if root == nil {
		return result
	}

	var nodeList = []*TreeNode{root}
	for len(nodeList) > 0 {
		levelNode := make([]int, 0)
		currentNodeList := nodeList[:]
		nodeList = make([]*TreeNode, 0)
		for _, node := range currentNodeList {
			levelNode = append(levelNode, node.Val)

			if node.Left != nil {
				nodeList = append(nodeList, node.Left)
			}
			if node.Right != nil {
				nodeList = append(nodeList, node.Right)
			}
		}
		result = append(result, levelNode)
	}
	return result
}

Last updated