二叉树的层次遍历golang版本
2023-08-20
1分钟阅读时长
二叉树的层次遍历golang版本
var res [][]int
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
//解法一
func levelOrder(root *TreeNode) [][]int {
res = [][]int{}
dfs(root, 0)
return res
}
func dfs(root *TreeNode, level int) {
if root != nil {
if len(res) == level {
res = append(res, []int{})
}
res[level] = append(res[level], root.Val)
dfs(root.Left, level+1)
dfs(root.Right, level+1)
}
}
//解法二
func levelOrder(root *TreeNode) [][]int {
res := [][]int{}
if root == nil {
return res
}
var queue = []*TreeNode{root}
var level int
for len(queue) > 0 {
counter := len(queue)
res = append(res, []int{})
for counter > 0 {
counter--
if queue[0].Left != nil {
queue = append(queue, queue[0].Left)
}
if queue[0].Right != nil {
queue = append(queue, queue[0].Right)
}
res[level] = append(res[level], queue[0].Val)
queue = queue[1:]
}
level++
}
return res
}