102. 二叉树的层序遍历

102. 二叉树的层序遍历

题目描述:

给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。

示例:
二叉树:[3,9,20,null,null,15,7],

​ 3
/
9 20
​ /
15 7
返回其层序遍历结果:

[
[3],
[9,20],
[15,7]
]

思路:

我用广度优先搜索来做,用队列的思想来做

代码:

func levelOrder(root *TreeNode) [][]int {
    var arr [][]int
    if root==nil{
        return arr
    }
    qu:=[]*TreeNode{root}
    for level:=0;len(qu)>0;level++ {
        arr=append(arr,[]int{})
        p:=[]*TreeNode{}
        for i := 0; i < len(qu); i++ {
            arr[level]=append(arr[level],qu[i].Val)
            if qu[i].Left != nil {
                p = append(p, qu[i].Left)
            }
            if qu[i].Right != nil {
                p = append(p, qu[i].Right)
            }
        }
        qu=p
    }
    return  arr
}

代码效率:

执行用时:0 ms, 在所有 Go 提交中击败了100.00%的用户
内存消耗:2.8 MB, 在所有 Go 提交中击败了96.60%的用户


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!