P**********c 发帖数: 3417 | 1 以前大家讨论过这道题,但是考古找不到了,有谁能再讲讲吗?
谢谢。 | d*******d 发帖数: 2050 | | g**********y 发帖数: 14569 | 3 heap to BST, 我只知道个不完美的答案,把heap sort后,依次填回heap结构中,用
successor()。
BST to heap, 有人给出答案:
public void bst2heap(int a[]) {
int n = a.length;
reverseArm(a, 0, n);
for (int i = 1; i < n / 2; i += 2)
reverseArm(a, i, n);
}
private void reverseArm(int a[], int from, int n) {
int to = from;
while (to * 2 + 2 < n)
to = to * 2 + 2;
while (to > from) {
int t = a[to];
a[to] = a[from];
a[from] = t;
from = from * 2 + 2;
to = to / 2 - 1;
}
}
这个答案有一点小bug, 就是最后的叶子有可能不对,需要检查一下。 |
|