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 协议 ,转载请注明出处!