- 层序遍历
- nextlevel记录下层的节点数
- tobeprint记录本层还有几个节点未打印,当其为0时,本层打印结束,重置其为nextlevel数量,而nextlevel更新为0
- levelnums记录现在是第几层,从而判断是从左向右打印还是相反
class Solution:
def Print(self, pRoot):
# write code here
if not pRoot:return ''
queue = [pRoot]
helper = []
tobeprint = 1
nextlevel = 0
res = []
levelnums = 0
while queue:
if queue[0].left:
queue.append(queue[0].left)
nextlevel += 1
if queue[0].right:
queue.append(queue[0].right)
nextlevel += 1
tobeprint -= 1
helper.append(queue[0].val)
queue.pop(0)
if tobeprint == 0:
levelnums += 1
if levelnums % 2 == 1:
res.append(helper)
else :
helper = helper[::-1]
res.append(helper)
helper = []
tobeprint = nextlevel
nextlevel = 0
return res