Golang二叉树层次遍历

题目

Golang 实现给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。

示例1

给定二叉树: [3, 9, 20, null, null, 15, 7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ]

代码具体实现

package main import ( "fmt" ) type TreeNode struct { Val int Left *TreeNode Right *TreeNode } func levelOrder(root *TreeNode) [][]int { if root == nil { return [][]int{} } pool := make([]*TreeNode, 0) pool = append(pool, root) var res [][]int for len(pool) > 0 { count := len(pool) children := make([]int, 0) for count > 0 { node := pool[0] count-- if node.Left != nil { pool = append(pool, node.Left) } if node.Right != nil { pool = append(pool, node.Right) } children = append(children, pool[0].Val) pool = pool[1:] } res = append(res, children) } return res } func main() { fmt.Println("嗨客网(www.haicoder.net)") node5 := &TreeNode{ Val:7, Left:nil, Right:nil, } node4 := &TreeNode{ Val:15, Left:nil, Right:nil, } node3 := &TreeNode{ Val:20, Left:node4, Right:node5, } node2 := &TreeNode{ Val:9, Left:nil, Right:nil, } node1 := &TreeNode{ Val:3, Left:node2, Right:node3, } fmt.Println(levelOrder(node1)) }

程序运行后,控制台输出如下:

19_golang二叉树层次遍历.png

我们输入了测试用例,输出了正确结果。