本篇文章給大家分享的是有關(guān)golang中怎么利用leetcode從上到下打印二叉樹,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
成都創(chuàng)新互聯(lián)為企業(yè)級(jí)客戶提高一站式互聯(lián)網(wǎng)+設(shè)計(jì)服務(wù),主要包括成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、成都App制作、微信平臺(tái)小程序開發(fā)、宣傳片制作、LOGO設(shè)計(jì)等,幫助客戶快速提升營(yíng)銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗(yàn)豐富的經(jīng)驗(yàn),可以確保每一個(gè)作品的質(zhì)量和創(chuàng)作周期,同時(shí)每年都有很多新員工加入,為我們帶來大量新的創(chuàng)意。
從上到下打印出二叉樹的每個(gè)節(jié)點(diǎn),同一層的節(jié)點(diǎn)按照從左到右的順序打印。
例如:
給定二叉樹: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回:
[3,9,20,15,7]
提示:
節(jié)點(diǎn)總數(shù) <= 1000
解題思路:
1,這是一個(gè)二叉樹和隊(duì)列結(jié)合的題目
2,我們從根節(jié)點(diǎn)開始
3,依次進(jìn)入隊(duì)列每個(gè)節(jié)點(diǎn)和左右孩子節(jié)點(diǎn)
4,每次彈出首節(jié)點(diǎn)返回
5,需要注意根節(jié)點(diǎn)為空的情況
6,golang可以用slice模仿隊(duì)列
golang小知識(shí)積累:
var a []int
a:=[]int{}
a:=make([]int,0)
這3種聲明方式,哪一種更優(yōu)?
答案是第一種
原因,第二種和第3種都有空間分配,第一種沒有
不分配內(nèi)存的還有一種變量,這就要說到一個(gè)特殊變量:匿名變量 ,也稱作占位符,或者空白標(biāo)識(shí)符,用下劃線表示。
匿名變量,優(yōu)點(diǎn)有三:
不分配內(nèi)存,不占用內(nèi)存空間
不需要你為命名無用的變量名而糾結(jié)
多次聲明不會(huì)有任何問題
代碼實(shí)現(xiàn)
/**
* 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從上到下打印二叉樹,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。