Skip to content

Commit ea2c5d1

Browse files
committed
yet incomplete
1 parent bf5e461 commit ea2c5d1

File tree

1 file changed

+22
-8
lines changed

1 file changed

+22
-8
lines changed

src/akc170000/AVLTree.java

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
*/
44
package akc170000;
55

6-
import java.util.Comparator;
7-
86
public class AVLTree<T extends Comparable<? super T>> extends BinarySearchTree<T> {
97
static class Entry<T> extends BinarySearchTree.Entry<T> {
108
int height;
@@ -14,6 +12,8 @@ static class Entry<T> extends BinarySearchTree.Entry<T> {
1412
}
1513
}
1614

15+
16+
1717
// LL >> R(x)
1818
private BinarySearchTree.Entry case1(BinarySearchTree.Entry x){
1919
BinarySearchTree.Entry y = x.left;
@@ -51,23 +51,37 @@ private BinarySearchTree.Entry case4(Entry x){
5151
z.left = x;
5252
return z;
5353
}
54+
5455
AVLTree() {
5556
super();
5657
}
5758

59+
private void fixAVL(){
60+
61+
while(!parentStack.isEmpty()) {
62+
BinarySearchTree.Entry parent = parentStack.pop();
63+
get(parent).height = 1 + Math.max(get(parent.left).height, get(parent.right).height);
64+
int leftHeight = parent.left == null ? -1 : get(parent.left).height;
65+
int rightHeight = parent.right == null ? -1 : get(parent.right).height;
66+
if (Math.abs(rightHeight - leftHeight) > 1){
5867

59-
private void fixAVL(BinarySearchTree.Entry x){
60-
BinarySearchTree.Entry parent = parentStack.pop();
68+
}else{
69+
break;
70+
}
71+
72+
}
73+
}
74+
75+
Entry get(BinarySearchTree.Entry x){
76+
return (Entry) x;
6177
}
6278

6379
@Override
64-
public boolean add(T k) {
80+
public boolean add(T k){
6581
BinarySearchTree.Entry x = new BinarySearchTree.Entry(k,null,null);
6682
((Entry) x).height = 0;
6783
if(super.add(x)){
68-
BinarySearchTree.Entry p_t = parentStack.pop(); // parent of the node x
69-
BinarySearchTree.Entry g_t =parentStack.pop(); // grand parent of node x
70-
84+
fixAVL();
7185
return true;
7286
}else{
7387
// adjust the height of current node

0 commit comments

Comments
 (0)