大家好,我是吳師兄,直接開始今天的算法學(xué)習(xí),沖沖沖。
一、題目描述
從上到下打印出二叉樹的每個(gè)節(jié)點(diǎn),同一層的節(jié)點(diǎn)按照從左到右的順序打印。
例如: 給定二叉樹:[3,9,20,null,null,15,7]
,
3
/
920
/
157
返回:
[3,9,20,15,7]
二、保姆級(jí)參考代碼
//登錄AlgoMooc官網(wǎng)獲取更多算法圖解
//https://www.algomooc.com
//作者:程序員吳師兄
classSolution{
publicint[]levelOrder(TreeNoderoot){
//根節(jié)點(diǎn)為空的情況返回空數(shù)組
if(root==null)returnnewint[0];
//生成一個(gè)隊(duì)列,用來保存節(jié)點(diǎn)
Queuequeue=newLinkedList<>();
//生成一個(gè)list,用來保存輸出的節(jié)點(diǎn)
Listlist=newArrayList<>();
//首先讓根節(jié)點(diǎn)入隊(duì)
queue.add(root);
//遍歷隊(duì)列,直到隊(duì)列為空
while(!queue.isEmpty()){
//獲取隊(duì)列的頭部元素
TreeNodenode=queue.poll();
//把結(jié)點(diǎn)值存放到list中
list.add(node.val);
//判斷該節(jié)點(diǎn)是否有左右子節(jié)點(diǎn)
//如果左子節(jié)點(diǎn)有值,則把左子節(jié)點(diǎn)加入到隊(duì)列中
if(node.left!=null){
queue.add(node.left);
}
//如果右子節(jié)點(diǎn)有值,則把右子節(jié)點(diǎn)加入到隊(duì)列中
if(node.right!=null){
queue.add(node.right);
}
}
//根據(jù)題目要求,把list轉(zhuǎn)化為數(shù)組
int[]res=newint[list.size()];
for(inti=0;i//返回res
returnres;
}
}
責(zé)任編輯:haq
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
原文標(biāo)題:面試官:讓你打印一下二叉樹,有必要這么麻煩嗎?
文章出處:【微信號(hào):TheAlgorithm,微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
相關(guān)推薦
在人工智能領(lǐng)域,機(jī)器學(xué)習(xí)算法是實(shí)現(xiàn)智能系統(tǒng)的核心。隨著數(shù)據(jù)量的激增和算法復(fù)雜度的提升,對(duì)計(jì)算資源的需求也在不斷增長(zhǎng)。NPU作為一種專門為深度學(xué)習(xí)等機(jī)器
發(fā)表于 11-15 09:19
?498次閱讀
finger表中查找最近的節(jié)點(diǎn)來實(shí)現(xiàn)。如果當(dāng)前節(jié)點(diǎn)的finger表中沒有直接指向目標(biāo)節(jié)點(diǎn)的條目,它會(huì)將請(qǐng)求轉(zhuǎn)發(fā)給finger表中指向的
發(fā)表于 11-08 16:03
近日,天津大學(xué)精密儀器與光電子工程學(xué)院的光子芯片實(shí)驗(yàn)室提出了一種基于深度學(xué)習(xí)的二維拉曼光譜算法,成果以“Rapid and accurate bacteria identification
發(fā)表于 11-07 09:08
?237次閱讀
邏輯組件中的流程塊節(jié)點(diǎn)是流程圖、狀態(tài)圖、序列圖等圖表中的基本元素,它們用于表示業(yè)務(wù)流程、工作流程、算法步驟、系統(tǒng)狀態(tài)等。這些節(jié)點(diǎn)在軟件開發(fā)、
發(fā)表于 10-15 14:38
?171次閱讀
01 默克爾樹的概念 默克爾樹(Merkle Tree)是一種特殊的二叉樹,它的每個(gè)節(jié)點(diǎn)都存儲(chǔ)了一個(gè)數(shù)據(jù)塊的哈希值。哈希值是一種可以將任意長(zhǎng)度的數(shù)據(jù)轉(zhuǎn)換為固定長(zhǎng)度的字符串的算法,它具有唯一性和不可
發(fā)表于 09-30 18:22
?974次閱讀
節(jié)點(diǎn)電壓法(Node Voltage Method)是一種在電路分析中常用的方法,用于求解電路中各節(jié)點(diǎn)的電壓。在這種方法中,我們通常選擇一個(gè)參考節(jié)點(diǎn)
發(fā)表于 08-06 17:24
?2378次閱讀
隨著人工智能技術(shù)的飛速發(fā)展,深度學(xué)習(xí)算法在各個(gè)領(lǐng)域的應(yīng)用日益廣泛。然而,將深度學(xué)習(xí)算法部署到資源受限的嵌入式平臺(tái)上,仍然是一個(gè)具有挑戰(zhàn)性的任務(wù)。本文將從嵌入式平臺(tái)的特點(diǎn)、深度
發(fā)表于 07-15 10:03
?1476次閱讀
隨著半導(dǎo)體技術(shù)的快速發(fā)展,集成電路(IC)的復(fù)雜性和集成度不斷提高,對(duì)測(cè)試技術(shù)的要求也日益增加。深度學(xué)習(xí)算法作為一種強(qiáng)大的數(shù)據(jù)處理和模式識(shí)別工具,在集成電路測(cè)試領(lǐng)域展現(xiàn)出了巨大的應(yīng)用潛力。本文將從深度學(xué)習(xí)
發(fā)表于 07-15 09:48
?1041次閱讀
在Matlab中實(shí)現(xiàn)深度學(xué)習(xí)算法是一個(gè)復(fù)雜但強(qiáng)大的過程,可以應(yīng)用于各種領(lǐng)域,如圖像識(shí)別、自然語言處理、時(shí)間序列預(yù)測(cè)等。這里,我將概述一個(gè)基本的流程,包括環(huán)境設(shè)置、數(shù)據(jù)準(zhǔn)備、模型設(shè)計(jì)、訓(xùn)練過程、以及測(cè)試和評(píng)估,并提供一個(gè)基于Mat
發(fā)表于 07-14 14:21
?2279次閱讀
節(jié)點(diǎn)電壓法(Node Voltage Method,簡(jiǎn)稱NVM)是電路分析中的一種基本方法,主要應(yīng)用于求解線性電路中的節(jié)點(diǎn)電壓。在節(jié)點(diǎn)電壓法
發(fā)表于 07-12 09:20
?3260次閱讀
應(yīng)用中往往難以實(shí)現(xiàn)。因此,無監(jiān)督學(xué)習(xí)在深度學(xué)習(xí)中扮演著越來越重要的角色。本文旨在綜述深度學(xué)習(xí)中的
發(fā)表于 07-09 10:50
?803次閱讀
覆蓋的敏感材料厚度超出叉指厚度時(shí)計(jì)算電阻,是否可以視作叉指電極指間電阻多個(gè)周期串聯(lián)后與超出叉指厚度部分敏感材料電阻并聯(lián)
發(fā)表于 07-05 14:48
機(jī)器學(xué)習(xí)作為人工智能的一個(gè)重要分支,其目標(biāo)是通過讓計(jì)算機(jī)自動(dòng)從數(shù)據(jù)中學(xué)習(xí)并改進(jìn)其性能,而無需進(jìn)行明確的編程。本文將深入解讀幾種常見的機(jī)器學(xué)習(xí)算法原理,包括線性回歸、邏輯回歸、支持向量機(jī)
發(fā)表于 07-02 11:25
?1117次閱讀
關(guān)于數(shù)據(jù)機(jī)器學(xué)習(xí)就是喂入算法和數(shù)據(jù),讓算法從數(shù)據(jù)中尋找一種相應(yīng)的關(guān)系。Iris鳶尾花數(shù)據(jù)集是一個(gè)經(jīng)典數(shù)據(jù)集,在統(tǒng)計(jì)學(xué)習(xí)和機(jī)器
發(fā)表于 06-27 08:27
?1677次閱讀
二叉樹,將出現(xiàn)頻率高的字符用較短的編碼表示,而出現(xiàn)頻率低的字符則用較長(zhǎng)的編碼表示。通過這種方式,可以實(shí)現(xiàn)對(duì)數(shù)據(jù)進(jìn)行高效的編碼和解碼。 下面我們將詳細(xì)介紹哈夫曼編碼的算法過程。 統(tǒng)計(jì)字符頻率 在進(jìn)行哈夫曼編碼前,首先需
發(fā)表于 01-30 11:27
?3111次閱讀
評(píng)論