从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
==》stack
# -*- 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 = [] stack = [pRoot] while stack: tmp = [] level = [] for node in stack: tmp.append(node.val) if node.left: level.append(node.left) if node.right: level.append(node.right) stack = level res.append(tmp) return res
==》queue
# -*- 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 [] from collections import deque q = deque() q.append(pRoot) res = [] while q: tmp = [] nextLevel = deque() for node in q: tmp.append(node.val) if node.left: nextLevel.append(node.left) if node.right: nextLevel.append(node.right) q = nextLevel res.append(tmp) return res