从上到下按层打印二叉树——题解
把二叉树打印成多行
https://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288?tpId=13&&tqId=11213&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
层序遍历的方法,使用两个数组current,next表示当前层和下一层的节点,不断地更新current和next的内容,直到current为空。(借用别人的方法,记录)
# -*- 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 = [] currentLayer = [pRoot] nextLayer = [] # 类似传统的层序遍历,将某一个节点加入队列,每一次移出节点的时候,就将他的子节点加入队列,这里使用两个数组,目的是区别不同层 while currentLayer: for node in currentLayer: if node.left is not None: nextLayer.append(node.left) if node.right is not None: nextLayer.append(node.right) res.append([i.val for i in currentLayer]) # 更新 currentLayer, nextLayer = nextLayer, [] return res