[剑指offer][JAVA]面试题第[32-2]题[从上到下打印二叉树][BFS]
【問(wèn)題描述】[簡(jiǎn)單]
從上到下按層打印二叉樹(shù),同一層的節(jié)點(diǎn)按從左到右的順序打印,每一層打印到一行。例如: 給定二叉樹(shù): [3,9,20,null,null,15,7],3/ \9 20/ \15 7 返回其層次遍歷結(jié)果:[[3],[9,20],[15,7] ]【解答思路】
層次遍歷 BFS
時(shí)間復(fù)雜度:O(N) 空間復(fù)雜度:O(N)
【總結(jié)】
1.細(xì)節(jié)
1.1 Queue
新建
入隊(duì)出隊(duì) add(x) poll()
1.2 ArrayList
新建
ArrayList ans = new ArrayList<>();
長(zhǎng)度 size()
獲取元素 get(i)
2. Queue
Queue是在兩端出入的List,所以也可以用數(shù)組或鏈表來(lái)實(shí)現(xiàn)。
- add 增加一個(gè)元索 如果隊(duì)列已滿,則拋出一個(gè)IIIegaISlabEepeplian異常
- remove 移除并返回隊(duì)列頭部的元素 如果隊(duì)列為空,則拋出一個(gè)NoSuchElementException異常
- element 返回隊(duì)列頭部的元素 如果隊(duì)列為空,則拋出一個(gè)NoSuchElementException異常
- offer 添加一個(gè)元素并返回true 如果隊(duì)列已滿,則返回false
- poll 移除并返問(wèn)隊(duì)列頭部的元素 如果隊(duì)列為空,則返回null
- peek 返回隊(duì)列頭部的元素 如果隊(duì)列為空,則返回null
- put 添加一個(gè)元素 如果隊(duì)列滿,則阻塞
- take 移除并返回隊(duì)列頭部的元素 如果隊(duì)列為空,則阻塞
注意
-
remove、element、offer 、poll、peek 其實(shí)是屬于Queue接口。
-
add remove element操作在隊(duì)滿或者隊(duì)空的時(shí)候會(huì)報(bào)異常。
-
offer poll peek 在隊(duì)滿或者隊(duì)空的時(shí)候不會(huì)報(bào)異常。
-
put take操作屬于阻塞操作。隊(duì)滿隊(duì)空均會(huì)阻塞。
3.LinkedList
- 以雙向鏈表實(shí)現(xiàn)的LinkedList既是List,也是Queue。
- 它是唯一一個(gè)允許放入null的Queue。
4.BFS 層次遍歷 隊(duì)列實(shí)現(xiàn)
轉(zhuǎn)載鏈接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/solution/mian-shi-ti-32-ii-cong-shang-dao-xia-da-yin-er-c-5/
總結(jié)
以上是生活随笔為你收集整理的[剑指offer][JAVA]面试题第[32-2]题[从上到下打印二叉树][BFS]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何生成后缀表达式
- 下一篇: 年末总结 | 音视频开发进阶 2021