劍指offer 60. 把二叉樹列印成多行
阿新 • • 發佈:2018-11-26
題目描述
從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。
思路:
兩個棧,分二級,第一級存一行的數curStack,第二級存著一行數所對應的left,right的值nextStack,每次結束
一輪迴圈,把curStack的值給result,然後再將nodes設成nextStack繼續進行迴圈。
比上道題按照之字形列印二叉樹更簡單,連結合層數都省了。
參考答案:
# -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: # 返回二維列表[[1,2],[4,5]] def Print(self, pRoot): # write code here if not pRoot: return [] res = [] current_layer = [pRoot] while current_layer: layer_res = [] next_layer = [] 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) res.append(layer_res[:]) current_layer = next_layer[:] return res
Note
- 注意,其中current_layer 的結果
current_layer = next_layer[:]
。