请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推
使用队列进行操作,在每一层用for循环处理保证读完一层。用flag纪录奇偶。
class Solution:
def Print(self, pRoot):
res = []
if pRoot == None:
return []
stack = []
stack.append(pRoot)
flag = -1
while stack:
lstack = []
for i in range(len(stack)):
toor = stack.pop(0)
lstack.append(toor.val)
if toor.left:
stack.append(toor.left)
if toor.right:
stack.append(toor.right)
if flag == 1:
lstack = lstack[::-1]
res.append(lstack)
flag *= -1
return res