亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何從上到下打印python二叉樹

發布時間:2021-12-13 15:51:00 來源:億速云 閱讀:193 作者:柒染 欄目:大數據

如何從上到下打印python二叉樹,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

題目描述

請實現一個函數按照之字形順序打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右到左的順序打印,第三行再按照從左到右的順序打印,其他行以此類推。

  • 節點總數 <= 1000

題目樣例

示例

輸入

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

    3
   / \
  9  20
    /  \
   15   7
 
輸出
[
  [3],
  [20,9],
  [15,7]
]
 

題目思考

  1. 可以繼續利用昨天的方案嗎, 不行的話需要進行哪些改動?

解決方案

思路

  • 回顧昨天那道題           劍指 Offer 32 - II. 從上到下打印二叉樹 II - leetcode 劍指offer系列, 我們是單獨打印每一層的節點, 只不過都是從左到右的方向
  • 針對這道題, 我們可以額外維護一個變量, 記錄當前方向, 每次到下一層時就調換方向即可
  • 也就是說, 只需要對昨天題目的代碼稍加改動就能搞定, 所以熟練掌握前面兩種 BFS 的模板是很有必要的, 很多問題都能在它們基礎上解決
復雜度
  • 時間復雜度           O(N)
    • 每個節點只需要遍歷一次
  • 空間復雜度           O(N)
    • 額外需要一個隊列
代碼
class Solution:
    def levelOrder(self, root: TreeNode) -> List[List[int]]:
        res = []
        if not root:
            return res
        q = [root]
        # 初始從左到右遍歷
        fromleft = True
        while q:
            curlen = len(q)
            cur = []
            for node in q[:curlen]:
                cur.append(node.val)
                if node.left:
                    q.append(node.left)
                if node.right:
                    q.append(node.right)
            if fromleft:
                res.append(cur)
            else:
                # 從右向左的話只需要將該層的值翻轉加入結果中即可
                res.append(cur[::-1])
            # 每一層結束后都調轉方向
            fromleft = not fromleft
            q = q[curlen:]
        return res
 

看完上述內容,你們掌握如何從上到下打印python二叉樹的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

揭东县| 内丘县| 凌海市| 米脂县| 抚顺市| 龙岩市| 浦东新区| 新泰市| 达拉特旗| 思茅市| 天祝| 蓝山县| 博乐市| 常宁市| 湟源县| 福安市| 南靖县| 惠东县| 涪陵区| 渝北区| 禹城市| 磐石市| 五原县| 堆龙德庆县| 淮滨县| 新建县| 瓦房店市| 玛纳斯县| 同心县| 淮阳县| 南宫市| 绥德县| 灵川县| 临夏市| 岳阳县| 卢龙县| 远安县| 彭水| 鹰潭市| 黔东| 尼勒克县|