题解 | #Tree# #把二叉树打印成多行#
把二叉树打印成多行
https://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288
#coding:utf-8
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param pRoot TreeNode类
# @return int整型二维数组
#
#*********#
#思路:用两个deque,交替处理
from collections import deque
class Solution:
def Print(self , pRoot ):
# write code here
#BFS
#init
path = []
#process
##corner case
if pRoot == None:
return pRoot
if pRoot.left == None and pRoot.right == None:
return [[pRoot.val]]
##base case
dq1 = deque()
dq1.append(pRoot)
#cur_cnt = 1
dq2 = deque()
while len(dq1) > 0 or len(dq2) > 0:
tmp_level = []
while len(dq1) > 0:
cur_node = dq1.popleft()
tmp_level.append(cur_node.val)
if cur_node.left != None:
dq2.append(cur_node.left)
if cur_node.right != None:
dq2.append(cur_node.right)
if len(tmp_level) > 0:
path.append(tmp_level)
tmp_level = []
while len(dq2) > 0:
cur_node = dq2.popleft()
tmp_level.append(cur_node.val)
if cur_node.left != None:
dq1.append(cur_node.left)
if cur_node.right != None:
dq1.append(cur_node.right)
if len(tmp_level) > 0:
path.append(tmp_level)
#print ("Path is: ", path)
#ret
return path
查看8道真题和解析