Leetcode 1194 Solution

This article provides solution to leetcode question 1194 (path-in-zigzag-labelled-binary-tree).

https://leetcode.com/problems/path-in-zigzag-labelled-binary-tree

Solution

class Solution:
    def depth(self, x):
        cnt = 0
        while x:
            x = x // 2
            cnt += 1
        return cnt
    
    def process(self, x):
        d = self.depth(x)
        
        if d % 2 == 0:
            y = 1
            
            while not (y <= x < y * 2):
                y *= 2

            return 3 * y - 1 - x
        else:
            return x

    def pathInZigZagTree(self, label: int) -> List[int]:
        pos = self.process(label)
        
        res = []
        
        while pos:
            res = [pos] + res
            pos = pos // 2
        
        for i in range(len(res)):
            res[i] = self.process(res[i])
            
        return res