1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| class Solution { List<Integer> ans = new ArrayList<>(); public List<Integer> pathInZigZagTree(int label) { int n = 1; int x = label; while (x / 2 != 0) { x = x / 2; n++; }
int tmp = label; while (n > 0) { ans.add(tmp); int max = (int)Math.pow(2, n) - 1; int min = (int)Math.pow(2, n - 1); if (n % 2 == 0) { while (max != tmp) { max--; min++; }
tmp = min / 2; }else { while (min != tmp) { max--; min++; } tmp = max / 2; } n--; } Collections.sort(ans); return ans; } }
|