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