题目
Given a binary tree, return the zigzag level order traversal of its nodes’ values. (ie, from left to right, then right to left for the next level and alternate between).
For example:
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its zigzag level order traversal as:
[
[3],
[20,9],
[15,7]
]
解题思路
这道题跟LeetCode: 102. Binary Tree Level Order Traversal很像,只是102是按层从左到右输出,而103是先从左到右再从右到左交替输出,所有加个判断是从左到右还是从右到左就好了。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:
res = []
if root is None:
return res;
level = [root]
tmp = 0
while level:
if tmp==0:
res.append([node.val for node in level])
tmp=1
else:
res.append([level[i].val for i in range(len(level)-1,-1,-1)])
tmp=0
internode = []
for node in level:
internode.extend([node.left, node.right])
level = [leaf for leaf in internode if leaf]
return res