真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

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

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

為任城等地區(qū)用戶提供了全套網頁設計制作服務,及任城網站建設行業(yè)解決方案。主營業(yè)務為成都網站設計、成都做網站、任城網站設計,以傳統(tǒng)方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

題目描述

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

  • 節(jié)點總數 <= 1000

題目樣例

示例

輸入

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

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

題目思考

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

解決方案

思路

  • 回顧昨天那道題           劍指 Offer 32 - II. 從上到下打印二叉樹 II - leetcode 劍指offer系列, 我們是單獨打印每一層的節(jié)點, 只不過都是從左到右的方向
  • 針對這道題, 我們可以額外維護一個變量, 記錄當前方向, 每次到下一層時就調換方向即可
  • 也就是說, 只需要對昨天題目的代碼稍加改動就能搞定, 所以熟練掌握前面兩種 BFS 的模板是很有必要的, 很多問題都能在它們基礎上解決
復雜度
  • 時間復雜度           O(N)
    • 每個節(jié)點只需要遍歷一次
  • 空間復雜度           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二叉樹的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


當前題目:如何從上到下打印python二叉樹
文章位置:http://weahome.cn/article/pggdcj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部