Skip to content

Commit aa61ae6

Browse files
authored
Create reverse-odd-levels-of-binary-tree.py
1 parent f8b2417 commit aa61ae6

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Time: O(n)
2+
# Space: O(n)
3+
4+
# Definition for a binary tree node.
5+
class TreeNode(object):
6+
def __init__(self, val=0, left=None, right=None):
7+
pass
8+
9+
10+
# bfs
11+
class Solution(object):
12+
def reverseOddLevels(self, root):
13+
"""
14+
:type root: Optional[TreeNode]
15+
:rtype: Optional[TreeNode]
16+
"""
17+
q = [root]
18+
parity = 0
19+
while q:
20+
if parity:
21+
left, right = 0, len(q)-1
22+
while left < right:
23+
q[left].val, q[right].val = q[right].val, q[left].val
24+
left += 1
25+
right -= 1
26+
if not q[0].left:
27+
break
28+
new_q = []
29+
for node in q:
30+
new_q.append(node.left)
31+
new_q.append(node.right)
32+
q = new_q
33+
parity ^= 1
34+
return root

0 commit comments

Comments
 (0)