# https://leetcode.com/problems/reverse-odd-levels-of-binary-tree from typing import Optional class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right class Solution: def reverseOddLevels(self, root: Optional[TreeNode]) -> Optional[TreeNode]: def traverse(left: Optional[TreeNode], right: Optional[TreeNode], depth: int): if left is None or right is None: return if depth % 2 == 1: tmp = left.val left.val = right.val right.val = tmp traverse(left.left, right.right, depth + 1) traverse(left.right, right.left, depth + 1) if root is not None: traverse(root.left, root.right, 1) return root