class Solution:
def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if root == None: return []
ans = [[root.val]]
cq = [root]
nq = []
for i in range(1,2001):
if len(cq) == 0: break
ans.append([])
while cq:
cur = cq.pop()
zig = i&1
nxt = [cur.left, cur.right]
if nxt[zig] != None:
ans[i].append(nxt[zig].val)
nq.append(nxt[zig])
if nxt[1-zig] != None:
ans[i].append(nxt[1-zig].val)
nq.append(nxt[1-zig])
cq, nq = nq, []
return ans[:-1]
그냥 BFS 돌았는데 뭔가 왔다갔다하기가 귀찮네;;
순서가 지그재그라 deque 대신 그냥 list를 stack으로 사용
댓글 0