103. Binary Tree Zigzag Level Order Traversal
S1:
class Solution:
def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:
if not root:
return None
res, restmp = [], []
stack0, stack1 = [root], []
flag = True
while stack0:
tmp = stack0.pop()
restmp.append(tmp.val)
if flag:
if tmp.left:
stack1.append(tmp.left)
if tmp.right:
stack1.append(tmp.right)
else:
if tmp.right:
stack1.append(tmp.right)
if tmp.left:
stack1.append(tmp.left)
if not stack0:
stack0 = stack1[:]
stack1.clear()
flag = not flag
res.append(restmp[:])
restmp.clear()
return res
S2:
class Solution:
def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:
if not root:
return None
res, restmp = [], []
stack0, stack1 = [root], []
flag = True
while stack0:
for tmp in stack0:
restmp.append(tmp.val)
if tmp.left:
stack1.append(tmp.left)
if tmp.right:
stack1.append(tmp.right)
stack0 = stack1[:]
stack1.clear()
if not flag:
restmp.reverse()
flag = not flag
res.append(restmp[:])
restmp.clear()
return res