所以这是我的任务。
编写一个使用AVL树存储通用值和键的Java类。
方法
我认为我有基本的想法但是我的树没有正确平衡。此外,inorder,preorder,postored正在工作中,在我实现ArrayList之前尝试确保正确排序。
任何帮助或修复都是巨大的。这是我到目前为止所拥有的。
set
答案 0 :(得分:0)
也许这会对你有所帮助:
重新计算树的高度:
public void computeHeight() {
height = 1;
if (left != null) {
height += left.height;
}
if (right != null) {
height += right.height;
}
}
返回平衡因子:
private int getBalance(){
int balance = 0;
if (left != null) {
balance += left.height;
}
if (right != null) {
balance -= right.height;
}
return balance;
}
平衡节点:
private Node balance() {
computeHeight();
int balance = getBalance();
if (balance > 1) {
if (left.getBalance() < 0) {
left = left.rotateLeft();
}
return rotateRight();
}else if (balance < -1) {
if (right.getBalance() > 0) {
right = right.rotateRight();
}
return rotateLeft();
}
return this;
}