劍指offer 59. 按之字形順序列印二叉樹
阿新 • • 發佈:2018-11-26
題目描述
請實現一個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。
思路:
與逐層列印二叉樹一樣,只是多了層數判定,依據層數做判定輸出。
按之字形順序列印二叉樹需要兩個棧。我們在列印某一行節點時,把下一層的子節點儲存到相應的棧裡。儲存層數,對temp_res
的結果儲存時結合層數做正反序append
。
參考答案:
# -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def Print(self, pRoot): # write code here if not pRoot: return [] current_layer = [pRoot] res = [] layer_level = 0 while current_layer: next_layer = [] layer_res = [] for node in current_layer: layer_res.append(node.val) if node.left: next_layer.append(node.left) if node.right: next_layer.append(node.right) current_layer = next_layer[:] if layer_level % 2 == 1: res.append(layer_res[::-1]) else: res.append(layer_res[:]) layer_level += 1 return res
Note
- 這道題要十分注意,其中current_layer 的結果
current_layer = next_layer[:]
,即是完全複製,直接用current_layer = next_layer
會出現錯誤的。