Skip to content

Commit 9422f09

Browse files
committed
SS34
1 parent e99f007 commit 9422f09

File tree

1 file changed

+59
-64
lines changed
  • aVL/src/main/java/com/mycompany/avl

1 file changed

+59
-64
lines changed

aVL/src/main/java/com/mycompany/avl/AVL.java

Lines changed: 59 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,21 @@
44
* and open the template in the editor.
55
*/
66
package com.mycompany.avl;
7-
import java. util. ArrayList;
87

98
/**
109
*
1110
* @author asadp
1211
*/
1312
public class AVL {
1413
Node root;
14+
public AVL(){
15+
this.root = null;
16+
}
17+
public AVL(Node root){
18+
this.root = root;
19+
}
1520
class Node{
1621
int item;
17-
int balance = balance();
1822
Node left, right;
1923

2024
public Node(int key){
@@ -52,6 +56,7 @@ void insert(int number){
5256
root = new Node(number);
5357
return;
5458
}
59+
System.out.println("root item is " + root.item);
5560
if(root.left == null && root.right == null){
5661
if(number < root.item){
5762
Node left = new Node(number);
@@ -99,88 +104,78 @@ void insert(int number){
99104
return;
100105
}
101106
}
102-
if(root.balance == 0){
107+
if(root.balance() == 0){
103108
if(number > root.item){
104-
AVL a = new AVL();
105-
a.root = root.right;
109+
AVL a = new AVL(root.right);
106110
a.insert(number);
107111
return;
108112
}else {
109-
AVL a = new AVL();
110-
a.root = root.left;
113+
AVL a = new AVL(root.left);
111114
a.insert(number);
115+
return;
112116
}
113-
} else if(root.balance == -1){
117+
} else if(root.balance() == -1){
114118
if(number < root.item){
115-
AVL a = new AVL();
116-
a.root = root.left;
119+
AVL a = new AVL(root.left);
117120
a.insert(number);
121+
return;
118122
}else {
119-
ArrayList<Node> nodes = new ArrayList();
120-
nodes.add(root);
121-
Node end = root.right;
122-
nodes.add(end);
123-
while(end != null){
124-
if(number < end.item){
125-
end = end.left;
126-
}else{
127-
end = end.right;
128-
}
129-
nodes.add(end);
123+
AVL ar = new AVL(root.right);
124+
int min = ar.min();
125+
if(number < min){
126+
AVL al = new AVL(root.left);
127+
al.insert(root.item);
128+
root.item = number;
129+
return;
130130
}
131-
AVL al = new AVL();
132-
al.root = root.left;
131+
ar.delete(min);
132+
ar.insert(number);
133+
AVL al = new AVL(root.left);
133134
al.insert(root.item);
134-
Node first = root;
135-
for(Node node : nodes){
136-
if(node == root){
137-
continue;
138-
}
139-
if(node == null){
140-
first.item = number;
141-
}else{
142-
first.item = node.item;
143-
}
144-
first = node;
145-
}
135+
root.item = min;
136+
return;
146137
}
147-
//the case for root.balance == 1
138+
//the case for root.balance() == 1
148139
}else {
149140
if(number > root.item){
150-
AVL a = new AVL();
151-
a.root = root.right;
141+
AVL a = new AVL(root.right);
152142
a.insert(number);
143+
return;
153144
}else {
154-
ArrayList<Node> nodes = new ArrayList();
155-
nodes.add(root);
156-
Node end = root.left;
157-
nodes.add(end);
158-
while(end != null){
159-
if(number < end.item){
160-
end = end.left;
161-
}else{
162-
end = end.right;
163-
}
164-
nodes.add(end);
165-
}
166-
AVL al = new AVL();
167-
al.root = root.right;
168-
al.insert(root.item);
169-
Node first = root;
170-
for(Node node : nodes){
171-
if(node == root){
172-
continue;
173-
}
174-
if(node == null){
175-
first.item = number;
176-
}else{
177-
first.item = node.item;
178-
}
179-
first = node;
145+
AVL al = new AVL(root.left);
146+
int max = al.max();
147+
if(number > max){
148+
AVL ar = new AVL(root.right);
149+
ar.insert(root.item);
150+
root.item = number;
151+
return;
180152
}
153+
al.delete(max);
154+
al.insert(number);
155+
AVL ar = new AVL(root.right);
156+
ar.insert(root.item);
157+
root.item = max;
158+
return;
181159
}
182160
}
183161
}
162+
void delete(int number){
163+
164+
}
165+
int max(){
166+
Node temp = root;
167+
while(temp.right != null){
168+
temp = temp.right;
169+
}
170+
return temp.item;
171+
}
172+
int min(){
173+
Node temp = root;
174+
while(temp.left != null){
175+
temp = temp.left;
176+
}
177+
return temp.item;
178+
}
184179
void preOrder(){
185180
if(root != null){
186181
System.out.print("item: " + root.item);

0 commit comments

Comments
 (0)