一、题目描述
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
提示:
节点总数 <= 1000
二、我的题解
按层输出 是典型的 树的广度优先搜索 的题型。
树的广度优先搜索使用 队列 的先入先出特性(先出队的节点先加入其左右孩子)实现。
队列在 golang 中用 切片 数据类型实现。
(多一嘴:其实栈和队列的顺序存储在 golang 中都是用切片实现的)
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func levelOrder(root *TreeNode) [][]int {
if root == nil{
return nil
}
var re [][]int
var num []int
//队列
que := []*TreeNode{root}
var l int
for len(que) != 0{
l = len(que)
num = []int{}
for i:=0;i<l;i++{
num = append(num,que[i].Val)
}
re = append(re,num)
for i:=0;i<l;i++{
if que[i].Left != nil{
que = append(que,que[i].Left)
}
if que[i].Right != nil{
que = append(que,que[i].Right)
}
}
//该层出队
que = que[l:]
}
return re
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/118967.html