Leetcode # 2415. Reverse Odd Levels of Binary Tree

Problem

https://leetcode.com/problems/reverse-odd-levels-of-binary-tree

Solution

Time Complexity: O(len(tree))
Space Complexity: O(len(tree))
(The input and output generally do not count towards the space complexity.)

class Solution:
  def reverseOddLevels(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
    nodes = [[root, 1]]
    p = 0
    while nodes[p][0].left:
      nodes.append([nodes[p][0].left,  nodes[p][1] + 1])
      nodes.append([nodes[p][0].right, nodes[p][1] + 1])
      p += 1

    traversed = 0
    for level in range(int(log2(len(nodes) + 1) + 0.1)):
      nodes_n = 2 ** level
      if level % 2 == 1:
        for n in range(nodes_n // 2):
          node_left  = nodes[traversed + n][0]
          node_right = nodes[traversed + nodes_n - n - 1][0]
          node_left.val, node_right.val = node_right.val, node_left.val
      traversed += nodes_n

    return root

 

Last Updated on 2024/12/20 by A1go

目錄
Bitnami