本篇文章给大家分享的是有关golang中怎么利用leetcode从上到下打印二叉树,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回:
[3,9,20,15,7]
提示:
节点总数 <= 1000
解题思路:
1,这是一个二叉树和队列结合的题目
2,我们从根节点开始
3,依次进入队列每个节点和左右孩子节点
4,每次弹出首节点返回
5,需要注意根节点为空的情况
6,golang可以用slice模仿队列
golang小知识积累:
var a []int
a:=[]int{}
a:=make([]int,0)
这3种声明方式,哪一种更优?
答案是第一种
原因,第二种和第3种都有空间分配,第一种没有
不分配内存的还有一种变量,这就要说到一个特殊变量:匿名变量 ,也称作占位符,或者空白标识符,用下划线表示。
匿名变量,优点有三:
不分配内存,不占用内存空间
不需要你为命名无用的变量名而纠结
多次声明不会有任何问题
代码实现
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func levelOrder(root *TreeNode) []int {
var r []int
if root==nil{
return r
}
var q []*TreeNode
q=append(q,root)
for len(q)>0{
h:=q[0]
r=append(r,h.Val)
if h.Left!=nil{
q=append(q,h.Left)
}
if h.Right!=nil{
q=append(q,h.Right)
}
if len(q)==1{
return r
}else{
q=q[1:]
}
}
return r
}
以上就是golang中怎么利用leetcode从上到下打印二叉树,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。