golang力扣leetcode 107. 二叉树的层序遍历 II

简介: golang力扣leetcode 107. 二叉树的层序遍历 II

题解

就是上一篇博文加一个翻转

代码

package main
func main() {
}
type TreeNode struct {
  Val   int
  Left  *TreeNode
  Right *TreeNode
}
func levelOrderBottom(root *TreeNode) [][]int {
  result := levelOrder(root)
  return reverse(result)
}
func reverse(cnt [][]int) [][]int {
  for i, j := 0, len(cnt)-1; i < j; i, j = i+1, j-1 {
    cnt[i], cnt[j] = cnt[j], cnt[i]
  }
  return cnt
}
func levelOrder(root *TreeNode) [][]int {
  if root == nil {
    return nil
  }
  result := make([][]int, 0)
  queue := make([]*TreeNode, 0)
  queue = append(queue, root)
  for len(queue) > 0 {
    cnt := make([]int, 0)
    queueSize := len(queue)
    for i := 0; i < queueSize; i++ {
      //出队
      v := queue[0]
      queue = queue[1:]
      //入队
      if v.Left != nil {
        queue = append(queue, v.Left)
      }
      if v.Right != nil {
        queue = append(queue, v.Right)
      }
      cnt = append(cnt, v.Val)
    }
    result = append(result, cnt)
  }
  return result
}
目录
相关文章
|
3月前
|
程序员 C语言
【C语言】LeetCode(力扣)上经典题目
【C语言】LeetCode(力扣)上经典题目
|
3月前
【LeetCode 31】104.二叉树的最大深度
【LeetCode 31】104.二叉树的最大深度
28 2
|
3月前
【LeetCode 29】226.反转二叉树
【LeetCode 29】226.反转二叉树
25 2
|
3月前
【LeetCode 28】102.二叉树的层序遍历
【LeetCode 28】102.二叉树的层序遍历
19 2
|
3月前
【LeetCode 43】236.二叉树的最近公共祖先
【LeetCode 43】236.二叉树的最近公共祖先
23 0
|
3月前
【LeetCode 38】617.合并二叉树
【LeetCode 38】617.合并二叉树
20 0
|
3月前
【LeetCode 37】106.从中序与后序遍历构造二叉树
【LeetCode 37】106.从中序与后序遍历构造二叉树
26 0
|
3月前
【LeetCode 34】257.二叉树的所有路径
【LeetCode 34】257.二叉树的所有路径
23 0
|
3月前
【LeetCode 32】111.二叉树的最小深度
【LeetCode 32】111.二叉树的最小深度
19 0
|
4月前
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
147 4
Golang语言之管道channel快速入门篇