Skip to content

Commit 2f0a1ca

Browse files
committed
first commit
0 parents  commit 2f0a1ca

12 files changed

+368
-0
lines changed

Proje1.iml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<module type="JAVA_MODULE" version="4">
3+
<component name="NewModuleRootManager" inherit-compiler-output="true">
4+
<exclude-output />
5+
<content url="file://$MODULE_DIR$">
6+
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
7+
</content>
8+
<orderEntry type="inheritedJdk" />
9+
<orderEntry type="sourceFolder" forTests="false" />
10+
</component>
11+
</module>
12+
Binary file not shown.

src/com/company/AVL.java

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
package com.company;
2+
3+
4+
public class AVL<T extends Comparable<T>> {
5+
Dugum<T> root;
6+
private int size = 0;
7+
8+
private Dugum<T> add(Dugum<T> altDugum, Dugum<T> yeni) {
9+
if (altDugum == null) {
10+
altDugum = yeni;
11+
setSize(1);
12+
} else if (yeni.veri.compareTo(altDugum.veri) < 0) { // yeni.veri < altDugum.veri
13+
altDugum.sol = add(altDugum.sol, yeni);
14+
15+
if (yukseklik(altDugum.sol) - yukseklik(altDugum.sag) == 2) { // denge bozuldu mu?
16+
if (yeni.veri.compareTo(altDugum.sol.veri) < 0) { //sol-sol dengesizliği mi var?
17+
altDugum = solCocukileDegistir(altDugum);
18+
} else { // sol-sağ dengesizliği var
19+
altDugum.sol = sagCocukileDegistir(altDugum.sol);
20+
altDugum = solCocukileDegistir(altDugum);
21+
}
22+
}
23+
} else if (yeni.veri.compareTo(altDugum.veri) > 0) { // yeni.veri > altDugum.veri
24+
altDugum.sag = add(altDugum.sag, yeni);
25+
26+
if (yukseklik(altDugum.sag) - yukseklik(altDugum.sol) == 2) { // denge bozuldu mu ?
27+
if (yeni.veri.compareTo(altDugum.sag.veri) > 0) { // sağ-sağ dengesizliği mi var?
28+
altDugum = sagCocukileDegistir(altDugum);
29+
} else { //sağ-sol dengesizliği mi var?
30+
altDugum.sag = solCocukileDegistir(altDugum.sag);
31+
altDugum = sagCocukileDegistir(altDugum);
32+
}
33+
}
34+
} else return altDugum;
35+
36+
altDugum.yukseklik = yukseklik(altDugum);
37+
return altDugum;
38+
}
39+
40+
private Dugum<T> solCocukileDegistir(Dugum<T> altDugum) {
41+
Dugum<T> tmp = altDugum.sol;
42+
altDugum.sol = tmp.sag;
43+
tmp.sag = altDugum;
44+
45+
//Yükseklik
46+
altDugum.yukseklik = yukseklik(altDugum);
47+
tmp.yukseklik = 1 + Math.max(yukseklik(tmp.sol), yukseklik(tmp.sag));
48+
return tmp;
49+
}
50+
51+
private Dugum<T> sagCocukileDegistir(Dugum<T> altDugum) {
52+
Dugum<T> tmp = altDugum.sag;
53+
altDugum.sag = tmp.sol;
54+
tmp.sol = altDugum;
55+
56+
//Yükseklik
57+
altDugum.yukseklik = yukseklik(altDugum);
58+
tmp.yukseklik = 1 + Math.max(yukseklik(tmp.sol), yukseklik(tmp.sag));
59+
return tmp;
60+
}
61+
// yükseklik hesaplar
62+
private int yukseklik(Dugum<T> altDugum) {
63+
if (altDugum == null) return -1;
64+
return 1 + Math.max(yukseklik(altDugum.sol), yukseklik(altDugum.sag));
65+
}
66+
// levele göre yazdırır
67+
private void levelOrder(Dugum<T> altDugum, int level) {
68+
if (altDugum == null) return;
69+
if (level == 0) System.out.print(altDugum.veri + " ");
70+
levelOrder(altDugum.sol, level - 1);
71+
levelOrder(altDugum.sag, level - 1);
72+
}
73+
// küçükten büyüğe yazdırır.
74+
private void ascending(Dugum<T> altDugum){
75+
if(altDugum == null) return;
76+
ascending(altDugum.sol);
77+
System.out.print(altDugum.veri + " ");
78+
ascending(altDugum.sag);
79+
}
80+
// büyükten küçüğe yazdırır
81+
private void descending(Dugum<T> altDugum){
82+
if(altDugum == null) return;
83+
descending(altDugum.sag);
84+
System.out.print(altDugum.veri + " ");
85+
descending(altDugum.sol);
86+
}
87+
// giriliş sırasına göre yazdırır.
88+
private void searchingByGirilisNumarasi(Dugum<T> altDugum, int sira){
89+
if(altDugum == null) return;
90+
if(altDugum.girilisSirasi == sira) System.out.print(altDugum.veri + " ");
91+
searchingByGirilisNumarasi(altDugum.sol, sira);
92+
searchingByGirilisNumarasi(altDugum.sag, sira);
93+
}
94+
95+
private int setSize(int boyut){
96+
size += boyut;
97+
return size;
98+
}
99+
100+
public void add(T veri, int sira) {
101+
Dugum<T> yeni = new Dugum<>(veri, sira);
102+
root = add(root, yeni);
103+
}
104+
105+
public int yukseklik() {
106+
return yukseklik(root);
107+
}
108+
109+
public void levelOrder() {
110+
int h = yukseklik(root);
111+
System.out.print("Level order : ");
112+
for (int i = 0; i <= h; i++) {
113+
levelOrder(root, i);
114+
}
115+
System.out.println();
116+
}
117+
118+
public void ascending(){
119+
System.out.print("Küçükten büyüğe sıralama : ");
120+
ascending(root);
121+
System.out.println();
122+
}
123+
public void descending(){
124+
System.out.print("Büyükten küçüğe sıralama : ");
125+
descending(root);
126+
System.out.println();
127+
}
128+
129+
public void searchingByGirilisSirasi(int sayiAdedi){
130+
System.out.print("Giriliş sırasına göre : ");
131+
for(int i = 0; i < sayiAdedi; i++){
132+
searchingByGirilisNumarasi(root, i);
133+
}
134+
System.out.println();
135+
}
136+
137+
public int getSize(){
138+
return size;
139+
}
140+
}

src/com/company/Dugum.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.company;
2+
3+
public class Dugum<T> {
4+
T veri; // String, Double, Integer Float vb. değerleri tutmak için
5+
int girilisSirasi; // hangi sırada giriş yapıldığını saklamak için
6+
Dugum<T> sol;
7+
Dugum <T> sag;
8+
int yukseklik;
9+
10+
public Dugum(T veri, int girilisSirasi)
11+
{
12+
this.veri = veri;
13+
this.girilisSirasi = girilisSirasi;
14+
yukseklik = 0;
15+
}
16+
}

src/com/company/Main.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.company;
2+
3+
import javax.xml.crypto.dsig.TransformService;
4+
import java.text.ParseException;
5+
import java.text.SimpleDateFormat;
6+
import java.util.*;
7+
import java.io.IOException;
8+
9+
public class Main {
10+
11+
public static void main(String[] args) throws IOException, ParseException {
12+
13+
AVL[] avlList = new AVL[]{
14+
new AVL<Integer>(), new AVL<Double>(), new AVL<Float>(), new AVL<Long>(),
15+
new AVL<Date>(), new AVL<String>()
16+
};
17+
TransformationTemplate[] transformationList = new TransformationTemplate[]{
18+
new TransformationInteger(), new TransformationDouble(), new TransformationFloat(),
19+
new TransformationLong(), new TransformationDate(), new TransformationString()
20+
21+
} ;
22+
Scanner scanner = new Scanner(System.in);
23+
String oku;
24+
do {
25+
System.out.println("Veri ekleyiniz : ");
26+
oku = scanner.next();
27+
for (int i = 0; i < 10; i++) {
28+
29+
System.out.println();
30+
}
31+
32+
for (int i = 0; i < transformationList.length; i++) {
33+
try {
34+
// veri türü değiştirilir.
35+
avlList[i].add((Comparable)transformationList[i].convert(oku), avlList[i].getSize());
36+
} catch (Exception e) {
37+
continue; // eğer regex veya parse hatası verirse veri yapısı ile tür yapısı uyuşmuyordur.
38+
}
39+
// veri türü eklenir.
40+
break; //ekleme yapıldı diğer ağaçları gezme.
41+
}
42+
43+
for(int i = 0; i < avlList.length; i++){
44+
avlList[i].levelOrder();
45+
}
46+
} while (true);
47+
}
48+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.company;
2+
3+
import java.text.ParseException;
4+
import java.text.SimpleDateFormat;
5+
import java.util.regex.Matcher;
6+
import java.util.regex.Pattern;
7+
8+
public class TransformationDate extends TransformationTemplate {
9+
private Object deger;
10+
private final String regex = "^\\d{2}[.]\\d{2}[.]\\d{4}$"; // sadece dd.MM.yyyy türünden veri dönüşümü yapabilir.
11+
private final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
12+
private SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
13+
14+
public TransformationDate(){
15+
deger = null;
16+
}
17+
18+
@Override
19+
public Object convert(Object deger) throws ParseException {
20+
Matcher matcher = pattern.matcher((String)deger);
21+
22+
matcher.find();
23+
24+
deger = sdf.parse(matcher.group(0));
25+
26+
return deger;
27+
28+
}
29+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.company;
2+
3+
import java.util.regex.Matcher;
4+
import java.util.regex.Pattern;
5+
6+
public class TransformationDouble extends TransformationTemplate {
7+
private Object deger;
8+
private final String regex = "^(\\+|\\-)?[\\d]{1,9}[.][\\d]+$"; // ^(+|-)?\d{1,9}[.]\d+$ tarzında sayıları ekler.
9+
private final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
10+
11+
public TransformationDouble() {
12+
deger = null;
13+
}
14+
15+
@Override
16+
public Object convert(Object deger) {
17+
Matcher matcher = pattern.matcher((String) deger);
18+
19+
matcher.find();
20+
21+
deger = Double.valueOf(matcher.group(0));
22+
23+
24+
25+
return deger;
26+
}
27+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.company;
2+
3+
import java.util.regex.Matcher;
4+
import java.util.regex.Pattern;
5+
6+
7+
public class TransformationFloat extends TransformationTemplate {
8+
private Object deger;
9+
private final String regex = "^(\\+|\\-)?\\d+[.]\\d+f$"; // ^(+|-)?\d+[.]\d+[f]$ tarzında sayıları ekler.
10+
private final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
11+
12+
public TransformationFloat() {
13+
deger = null;
14+
}
15+
16+
@Override
17+
public Object convert(Object deger) {
18+
Matcher matcher = pattern.matcher((String) deger);
19+
20+
matcher.find();
21+
deger = Float.valueOf(matcher.group(0));
22+
23+
24+
return deger;
25+
26+
}
27+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.company;
2+
3+
import java.util.regex.Matcher;
4+
import java.util.regex.Pattern;
5+
6+
public class TransformationInteger extends TransformationTemplate {
7+
private Object deger;
8+
private final String regex = "^(\\+|\\-)?[\\d]{1,9}$"; ; // ^(+|-)?\d{1,9}$ tarzında sayıları alır
9+
private final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
10+
11+
public TransformationInteger() {
12+
deger = null;
13+
}
14+
15+
@Override
16+
public Object convert(Object deger) {
17+
Matcher matcher = pattern.matcher((String) deger);
18+
19+
matcher.find();
20+
21+
deger = Integer.valueOf(matcher.group(0));
22+
23+
24+
25+
return deger;
26+
}
27+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.company;
2+
3+
import java.util.regex.Matcher;
4+
import java.util.regex.Pattern;
5+
6+
public class TransformationLong extends TransformationTemplate {
7+
private Object deger;
8+
private final String regex = "^(\\+|\\-)?\\d*\\d+$";
9+
private final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
10+
11+
public TransformationLong() {
12+
deger = null;
13+
}
14+
15+
@Override
16+
public Object convert(Object deger) {
17+
Matcher matcher = pattern.matcher((String) deger);
18+
19+
matcher.find();
20+
21+
deger = Long.valueOf(matcher.group(0));
22+
23+
24+
return deger;
25+
}
26+
}

0 commit comments

Comments
 (0)