leetcode : Reverse Odd Levels of Binary Tree
https://leetcode.com/problems/reverse-odd-levels-of-binary-tree/
간단하게 2번째, 4번째 등 짝수번째 레벨의 노드들 값을 뒤집어주는건데 (문제에선 루트를 레벨 0부터 보니까 2번째가 level1으로 홀수레벨이다) naive하게 if문을 써서 풀어도 되지만 사람들의 풀이를 보니까 비트연산자를 활용하는거보고 나도 따라서 코딩했다.
class Solution:
def reverseOddLevels(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
curOdd = 0
curNodes = [root]
while True:
if curOdd:
for i in range(len(curNodes)//2):
tmp = curNodes[i].val
curNodes[i].val = curNodes[~i].val
curNodes[~i].val = tmp
if not curNodes[0].left:
break
nextNodes = []
for node in curNodes:
nextNodes.append(node.left)
nextNodes.append(node.right)
curNodes = nextNodes
curOdd = ~curOdd
return root
~0이 -1과 같은걸 이용해 간단하게 코딩할 수 있다.