Redian新闻
>
convert heap to BST, and vice versa
avatar
convert heap to BST, and vice versa# JobHunting - 待字闺中
P*c
1
以前大家讨论过这道题,但是考古找不到了,有谁能再讲讲吗?
谢谢。
avatar
d*d
2
我记得这个,好像没有得出完美答案
avatar
g*y
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, 就是最后的叶子有可能不对,需要检查一下。
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。