GO题解 | #求二叉树的层序遍历#
来自
【GO题解】
934 浏览
0 回复
2021-04-23
求二叉树的层序遍历
http://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3
go解题答案
- 时间复杂度O(n)
- 思路概括:双队列
- 思路核心:
1、每层一个数组,所以外层循环构造层数,内层循环将节点值填入
2、使用两个队列,第一个用于遍历本层节点,第二个用于把本层关联的下层节点加入,然后调换。func levelOrder( root *TreeNode ) [][]int {
// 第一 层数
if root==nil {
return nil
}
stack:=[]*TreeNode{root}
res:=make([][]int,0)
for i:=0;len(stack)>0;i++{ // 每循环一次就是一层,直到stack空
res=append(res,[]int{})
levelNode:=[]*TreeNode{} // 存储下层节点
for j:=0;j<len(stack);j++{
cur:=stack[j]
res[i] = append(res[i],cur.Val)
if cur.Left !=nil {
levelNode=append(levelNode,cur.Left)
}
if cur.Right !=nil {
levelNode=append(levelNode,cur.Right)
}
}
stack=levelNode
}
return res
}
如果有帮助请点个赞哦, 更多文章请看我的博客
题主背景
- 从业8年——超级内卷500Q技术经理——目前专注go和微服务架构