1.题目
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
2.思路
在上一题的基础上,加上flag标志判断,若flag为负表示偶数行,从右往左遍历。
3.代码
class Solution:
def Print(self, pRoot):
queue = [pRoot]
res = []
flag = 1 #判断flag是否为负,如果为负表示偶数行,从右往左遍历
if not pRoot:
return []
while queue:
templist = []
templen = len(queue)
for i in range(templen):
temp = queue.pop(0)
templist.append(temp.val)
if temp.left:
queue.append(temp.left)
if temp.right:
queue.append(temp.right)
if flag == -1:
templist = templist[::-1] #反转
res.append(templist)
flag *= -1
return res