日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode 打印_剑指 Offer 32 - III 从上到下打印二叉树 III - leetcode 剑指offer

發布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 打印_剑指 Offer 32 - III 从上到下打印二叉树 III - leetcode 剑指offer 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目難度: 中等
原題鏈接
今天繼續更新劍指 offer 系列, 這道題相比昨天那道題多了個每層打印方向不同的需求, 聰明的你想到應該如何實現了嗎?
老樣子晚上 6 點 45 分準時更新公眾號 每日精選算法題, 大家記得關注哦~ 另外在公眾號里回復 offer 就能看到劍指 offer 系列當前連載的所有文章了

題目描述

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

  • 節點總數 <= 1000

題目樣例

示例

輸入

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

3/ 9 20/ 15 7

輸出

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

題目思考

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

    思路

    • 回顧昨天那道題 劍指 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 resq = [root]# 初始從左到右遍歷fromleft = Truewhile 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 fromleftq = q[curlen:]return res
    大家可以在下面這些地方找到我~
    我的知乎專欄
    我的 CSDN
    我的 Leetcode
    我的牛客網博客
    我的公眾號: 每日精選算法題, 歡迎大家掃碼關注~

    總結

    以上是生活随笔為你收集整理的leetcode 打印_剑指 Offer 32 - III 从上到下打印二叉树 III - leetcode 剑指offer的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。