Leetcode 107. 二叉树的层序遍历 II

14 阅读1分钟

题目

image.png

26年5月13日(首刷自解)

func levelOrderBottom(root *TreeNode) [][]int {
   ret:=[][]int{}
    if root==nil {
        return nil
    }
    q:=[]*TreeNode{root}
    for i:=0 ;len(q)>0; i++   {
        p:=[]*TreeNode{}
        ret=append(ret,[]int{})
        for j:=0 ;j<len(q) ;j++ {
            node:=q[j]
            ret[i]=append(ret[i],node.Val)
            if node.Left!=nil{
                p=append(p,node.Left)
            }
            if node.Right!=nil{
                p=append(p,node.Right)
            }
        }
        q=p
    }
    k:=0
    final:=len(ret)-1
    for(k<=final){
        
        a :=ret[k]
        ret[k]=ret[final]
        ret[final]=a
        k++
        final--
    }
    return ret
}

思路

这道题和102题几乎一样,只是这道题返回数组顺序不一样,最后我给他前后交换了一下位置,前面的代码可以照搬102题。

时间复杂度: O(n) 空间复杂度:O (n)