Description


Submission
class Solution {
public:
vector<int> pathInZigZagTree(int label) {
if(label == 1) return {1};
int l = label;
int n = floor(log2(label))+1;
int low = pow(2, n-1);
int high = pow(2, n) - 1;
if(n & 1) {
l = low + high - l;
}
vector<int> rets(n);
for(; n > 0 ; --n, l /= 2) {
int low = pow(2, n-1);
int high = pow(2, n) - 1;
if(n & 1) { // odd, reversed
rets[n-1] = low + high - l;
} else {
rets[n-1] = l;
}
}
return rets;
}
};
