劍指offer:把二叉樹列印成多行(python)
阿新 • • 發佈:2019-01-10
題目描述
從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。思路:
1、把每層節點的val值用list存好
2、把每層節點存好:
①計算當層節點的個數,這樣就保證下一步每層的結點都被pop光
②然後依次彈出從左到右的每個節點,然後在list中加入該節點對應的左結點、右節點(如果存在的話)
# -*- 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): if not pRoot : return [] queue = [pRoot] result = [] while (queue): size = len(queue) row = [] for i in queue: row.append(i.val) result.append(row) for i in range(size): node = queue.pop(0) if (node.left is not None): queue.append(node.left) if (node.right is not None): queue.append(node.right) return result