LeetCode 102. 二叉樹的層序遍歷 | Python

102. 二叉樹的層序遍歷


題目來源:https://leetcode-cn.com/problems/binary-tree-level-order-traversal

題目


給你一個(gè)二叉樹烤惊,請你返回其按 層序遍歷 得到的節(jié)點(diǎn)值。 (即逐層地呼畸,從左到右訪問所有節(jié)點(diǎn))。

示例:

二叉樹:[3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回其層次遍歷結(jié)果:

[
  [3],
  [9,20],
  [15,7]
]

解題思路


思路:廣度優(yōu)先搜索

本題,我們使用廣度優(yōu)先搜索的思路來解決。

廣度優(yōu)先搜索(BFS)任柜,它是按照層進(jìn)行搜索的。題目中要求沛厨,按層序遍歷得到所需的節(jié)點(diǎn)宙地。那么這里就跟 BFS 訪問的方式吻合。

在這里逆皮,我們借助隊(duì)列宅粥,保存每層的所有節(jié)點(diǎn),然后每次把隊(duì)列里所有的節(jié)點(diǎn)都進(jìn)行出隊(duì)操作电谣。出隊(duì)這里需要注意秽梅,保存每層所有節(jié)點(diǎn)的時(shí)候,這里先可以標(biāo)記每層的節(jié)點(diǎn)數(shù)剿牺,那么在出隊(duì)的時(shí)候风纠,循環(huán)遍歷的次數(shù)就等于當(dāng)前層數(shù)的節(jié)點(diǎn)數(shù)。

此時(shí)遍歷每層節(jié)點(diǎn)時(shí)牢贸,如果當(dāng)前節(jié)點(diǎn)的左右節(jié)點(diǎn)非空時(shí)竹观,再次加入隊(duì)列。循環(huán)操作,這樣每層都能夠被遍歷臭增,隊(duì)列為空時(shí)懂酱,就能得到想要的結(jié)果。

具體的代碼如下誊抛。

代碼實(shí)現(xiàn)


# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def levelOrder(self, root: TreeNode) -> List[List[int]]:
        # 先處理特殊情況
        if not root:
            return []

        # 返回結(jié)果
        res = []

        from collections import deque
        # 定義隊(duì)列
        queue = deque()
        # 將根節(jié)點(diǎn)入隊(duì)
        queue.append(root)
        # 隊(duì)列不為空列牺,表達(dá)式二叉樹還有節(jié)點(diǎn),循環(huán)遍歷
        while queue:
            # 先標(biāo)記每層的節(jié)點(diǎn)數(shù)
            size = len(queue)
            # 定義變量拗窃,記錄每層節(jié)點(diǎn)值
            level = []
            # 這里開始遍歷當(dāng)前層的節(jié)點(diǎn)
            for _ in range(size):
                # 出隊(duì)
                node = queue.popleft()
                # 先將當(dāng)前節(jié)點(diǎn)的值存儲(chǔ)
                level.append(node.val)
                # 節(jié)點(diǎn)的左右節(jié)點(diǎn)非空時(shí)瞎领,入隊(duì)
                if node.left is not None:
                    queue.append(node.left)
                if node.right is not None:
                    queue.append(node.right)
            # 添加每層的節(jié)點(diǎn)值列表
            res.append(level)
        return res

實(shí)現(xiàn)結(jié)果


實(shí)現(xiàn)結(jié)果

以上就是使用廣度優(yōu)先搜索,借助隊(duì)列先入先出的性質(zhì)随夸,逐層遍歷九默,得到所需求的解,進(jìn)而解決《102. 二叉樹的層序遍歷》問題的主要內(nèi)容宾毒。


歡迎關(guān)注微信公眾號(hào)《書所集錄》

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末驼修,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子诈铛,更是在濱河造成了極大的恐慌乙各,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幢竹,死亡現(xiàn)場離奇詭異耳峦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)焕毫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門蹲坷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咬荷,你說我怎么就攤上這事冠句。” “怎么了幸乒?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵懦底,是天一觀的道長。 經(jīng)常有香客問我罕扎,道長聚唐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任腔召,我火速辦了婚禮杆查,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘臀蛛。我一直安慰自己亲桦,他們只是感情好崖蜜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著客峭,像睡著了一般豫领。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上舔琅,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天等恐,我揣著相機(jī)與錄音,去河邊找鬼备蚓。 笑死课蔬,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的郊尝。 我是一名探鬼主播二跋,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼虚循!你這毒婦竟也來了同欠?” 一聲冷哼從身側(cè)響起样傍,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤横缔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后衫哥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茎刚,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年撤逢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了膛锭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蚊荣,死狀恐怖初狰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情互例,我是刑警寧澤奢入,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站媳叨,受9級特大地震影響腥光,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜糊秆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一武福、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧痘番,春花似錦捉片、人聲如沸平痰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽觉增。三九已至,卻和暖如春翻斟,著一層夾襖步出監(jiān)牢的瞬間逾礁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工访惜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嘹履,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓债热,卻偏偏與公主長得像砾嫉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子窒篱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355