0
我想寫一個函數以下列方式排列數組。 給定一個二叉樹像這樣的(十六進制保持對稱性):排列數組,二叉樹,回溯
0
1
2 3
4 5 6 7
8 9 A B C D E F
我想獲得回溯算法後的數字:
[0,1,2,4,8,9,5,A,B,3,6,C,D,7,E,F]
我已經寫了一個C函數,但我確信有一個更清潔/更快的遞歸方式來做到這一點。這裏是我的代碼:
void bin_perm(float* data, float* bprm, size_t size) {
bprm[0] = data[0];
size_t j = 1;
size_t i = 1;
while (j < size) {
while (i < size) {
bprm[j++] = data[i];
i *= 2;
}
i = i/2 + 1;
while (i % 2 == 0) {
i /= 2;
}
}
}
謝謝!它完美的作品。我想知道這是不是讓我懶惰的想法。 ;-) – matovitch