二叉树高度的代码解析_剑指offer 从上到下打印二叉树
生活随笔
收集整理的這篇文章主要介紹了
二叉树高度的代码解析_剑指offer 从上到下打印二叉树
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
從上往下打印出二叉樹的每個節點,同層節點從左至右打印。
解析:這實際上就是二叉樹的層序遍歷。規律如下:每次打印節點,如果該節點有子節點,則將子節點放入隊列末尾,然后取出隊列頭部最早進入隊列的節點,重復上述操作直至隊列為空。用list模擬隊列。
代碼如下:
class Solution:# 返回從上到下每個節點值列表,例:[1,2,3]def PrintFromTopToBottom(self, root):# write code hereres = []queue = []if not root:return resqueue.append(root)while queue:tmp = queue.pop(0)res.append(tmp.val)if tmp.left:queue.append(tmp.left)if tmp.right:queue.append(tmp.right)return res擴展1:分行從上到下打印二叉樹
題目描述
從上到下按層打印二叉樹,同一層結點從左至右輸出。每一層輸出一行。
解析:層序遍歷的變種,本質相同,方法類似。
代碼如下:
class Solution:# 返回二維列表[[1,2],[4,5]]def Print(self, pRoot):# write code hereres = []if not pRoot:return resqueue = [pRoot]while queue:level = []next = []for tmp in queue:level.append(tmp.val)if tmp.left:next.append(tmp.left)if tmp.right:next.append(tmp.right)res.append(level)queue = next[:]return res擴展2:之字形打印二叉樹
題目描述
請實現一個函數按照之字形打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右至左的順序打印,第三行按照從左到右的順序打印,其他行以此類推。
解析:層序遍歷的變種。
代碼如下:
class Solution:def Print(self, pRoot):# write code hereres = []if not pRoot:return resqueue = [pRoot]k = 0while queue:level = []next = []for tmp in queue:level.append(tmp.val)if tmp.left:next.append(tmp.left)if tmp.right:next.append(tmp.right)if k & 1 == 0:res.append(level)else:level.reverse()res.append(level)queue = next[:]k = k + 1return res2019.3.21
總結
以上是生活随笔為你收集整理的二叉树高度的代码解析_剑指offer 从上到下打印二叉树的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows2012运行linux,L
- 下一篇: Android11vivox21刷机包,