劍指Offer 之字形列印二叉樹 Python

2021-08-19 15:25:18 字數 955 閱讀 7202

【題目要求】:請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。

【解題思路】:之字形列印-->先遍歷後進來的節點的子樹-->類似於棧的思想

設定乙個棧用來裝上一層的節點(源節點,根據這乙個棧的節點遍歷它的左右子樹,遍歷完這一層之後會變成空棧),但遍歷到的左右子樹也需要進棧,所以有要設定乙個中間轉換棧(遍歷完這一層之後裝有下一次遍歷的源節點,重新送回遞迴函式)

之字形列印,需要考慮先遍歷左節點還是右節點,所以需要考慮方向,那就設定乙個flag吧~

【第一次**】:

class solution:

def zprint(self, list_out,stack,direction):

if stack:

temp_stack =

temp_list =

direction = not direction

while stack:

root = stack.pop()

if direction:

if root.left:

if root.right:

else:

if root.right:

if root.left:

self.zprint(list_out, temp_stack, direction)

def print(self, proot):

# write code here

list_out =

stack =

if proot:

direction = true#右向左

self.zprint(list_out,stack,direction)

return list_out 

劍指offer 之字形列印二叉樹

請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。利用兩個棧 定義乙個兩個棧的陣列 用current和next分別指示當前層和下一層,如果當前層是奇數層 current 0 則下一層先入棧左節點再入棧右節點...

劍指offer 之字形列印二叉樹

請實現乙個函式按照之字形順序從上向下列印二叉樹。即第一行按照從左到右的順序列印,第二層按照從右到左的順序列印,第三行再按照從左到右的順序列印,其他行以此類推。輸入如下圖所示二叉樹 8,12,2,null,null,6,4,null,null,null,null 8 12 2 6 4 輸出 8 2,1...

劍指offer之之字形列印二叉樹

題目 請實現乙個函式按照之字形順序列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右到左的順序列印,第三行再按照從左到右的順序列印,其他行以此類推。前面講述了分行分成列印二叉樹,這裡要之字形。例子 8 4 12 2 6 10 14 1 3 5 7 9 11 13 15列印結果應該是 8 12...