130、二叉樹(shù)的之字形層序遍歷

leetcode103
思路1:

  • 打算建立兩個(gè)隊(duì)列L1,L2,用BFS方法去搜索,
  • 當(dāng)前列表設(shè)置為L(zhǎng)1,然后搜索L1的節(jié)點(diǎn),搜索一個(gè)就彈出一個(gè),并把搜到的節(jié)點(diǎn)都添加到L2中
  • 搜索完L1以后,此時(shí)L1為空,L2代表的是下一層的節(jié)點(diǎn)。此時(shí)再把當(dāng)前隊(duì)列設(shè)置為L(zhǎng)2,然后進(jìn)行上面的循環(huán)。
  • 循環(huán)結(jié)束條件,兩個(gè)list都為空時(shí),說(shuō)明循環(huán)就可以停止了。

思路2:

  • 為了使代碼簡(jiǎn)單些,把讀取下一行,把下一行節(jié)點(diǎn)插入隊(duì)列,讀取下一行節(jié)點(diǎn)的val步驟單獨(dú)定義成一個(gè)函數(shù)。
  • 每次對(duì)新的一行進(jìn)行搜索時(shí),調(diào)用此函數(shù)即可,然后決定是否反轉(zhuǎn)。
  • 循環(huán)結(jié)束條件:新的隊(duì)列為空

代碼:
注意用列表表示隊(duì)列時(shí),每次添加元素都是用insert方法。

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

class Solution:
    def zigzagLevelOrder(self, root):
        """
        :type root: TreeNode
        :rtype: List[List[int]]
        """

        def search_func(Q_para):
            Q_res = []
            L_res = []
            while Q_para:
                node = Q_para.pop()
                if node.left:
                    Q_res.insert(0,node.left)
                    L_res.append(node.left.val)
                if node.right:
                    Q_res.insert(0,node.right)
                    L_res.append(node.right.val)
            return Q_res,L_res
        if root:
            results = []
            Que = [root]
            L1 = [root.val]
            n = 0
            while Que:
                if n%2 == 0:
                    results.append(L1)
                else:
                    L1.reverse()
                    results.append(L1)
                Que,L1 = search_func(Que)
                n += 1
            return results
            
        else:
            return []
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 高四的生活(4) 涂乾追方嫄這件事,隨著時(shí)間流逝,漸漸成為過(guò)去完成式。我與方嫄的關(guān)系隨著頻繁的接觸,變得越來(lái)越微妙...
    秦唯徑閱讀 512評(píng)論 2 4
  • 上午一輛途觀做保養(yǎng)建議車主更換火花塞并清洗積碳,車主也同意做了。在清洗積碳的過(guò)程是沒(méi)有任何的問(wèn)題,但當(dāng)熄火后把清洗...
    天長(zhǎng)地久盼三生閱讀 189評(píng)論 0 0
  • 不管再忙碌的生活,總有閑下來(lái)的時(shí)候;再好的心態(tài),也有疲憊的那一刻。 這兩天的生活總的來(lái)說(shuō)還是很充實(shí)的。但當(dāng)我靜下來(lái)...
    影筠閱讀 318評(píng)論 0 5
  • 做人本來(lái)就不容易,做個(gè)好人更難,做個(gè)好男人(好女人)更是難上加難。 我一直很好奇:什么樣的男人才稱得上是好男人?為...
    七片藍(lán)楓葉閱讀 299評(píng)論 1 0

友情鏈接更多精彩內(nèi)容