public class Urun {
private String urunAdi;
private int fiyat;
public Urun(String urunAdi, int fiyat) {
super();
this.urunAdi = urunAdi;
this.fiyat = fiyat;
}
public String getUrunAdi() {
return urunAdi;
}
public int getFiyat() {
return fiyat;
}
@Override
public String toString() {
return "Urun [urunAdi=" + urunAdi + ", fiyat=" + fiyat + "]";
}
}
Node.java
public class Node {
Urun urun;
Node leftChild;
Node rightChild;
public Node(Urun urun)
{
this.urun = urun;
}
}
Tree.java
public class Tree {
private Node root;
public Tree()
{
root = null;
}
public Node getRoot()
{
return root;
}
public void ekle(Urun yeniUrun)
{
Node yeniNode = new Node(yeniUrun);
String urunAdi = yeniUrun.getUrunAdi();
if(root == null)
root = yeniNode;
else
{
Node gecici = root;
Node parent;
while(true)
{
parent = gecici;
if(gecici.urun.getUrunAdi().compareTo(urunAdi) < 0)
{
gecici = gecici.leftChild;
if(gecici == null)
{
parent.leftChild = yeniNode;
return;
}
}
else
{
gecici = gecici.rightChild;
if(gecici == null)
{
parent.rightChild = yeniNode;
return;
}
}
}
}
}
public int elemanSay(Node node)
{
if(node == null)
return 0;
return 1 + elemanSay(node.leftChild) + elemanSay(node.rightChild);
}
public int topDerinlik(Node node, int derinlik)
{
if(node == null)
return 0;
return derinlik + topDerinlik(node.leftChild, derinlik) + topDerinlik(node.rightChild, derinlik);
}
public int maxDerinlik(Node node, int derinlik)
{
if(node == null)
return 0;
else if(node.leftChild == null && node.rightChild == null)
return derinlik;
else
{
int maxLeft = maxDerinlik(node.leftChild, derinlik);
int maxRight = maxDerinlik(node.rightChild, derinlik);
if(maxLeft > maxRight)
return maxLeft;
else
return maxRight;
}
}
public void inOrder(Node node)
{
if(node != null)
{
inOrder(node.leftChild);
System.out.println(node.urun.toString());
inOrder(node.rightChild);
}
}
}
Test.java
import java.util.ArrayList;
public class Test {
public static void main(String args[])
{
ArrayList<Urun> list = urunler();
Tree tree = new Tree();
for(int i=0;i<list.size();i++)
tree.ekle(list.get(i));
int elemanSayisi = tree.elemanSay(tree.getRoot());
int toplamDerinlik = tree.topDerinlik(tree.getRoot(), 0);
int maximumDerinlik = tree.maxDerinlik(tree.getRoot(), 0);
tree.inOrder(tree.getRoot());
System.out.println("Eleman Sayisi: "+ elemanSayisi);
System.out.println("Toplam Derinlik: "+ toplamDerinlik);
System.out.println("Maximum Derinlik: "+ maximumDerinlik);
}
private static ArrayList<Urun> urunler() {
int[] fiyatlar = {550,120,20,720,960,30,60,140,840,630};
String[] isimler = {"masa","koltuk","tabak","catal","kasik","bardak","laptop","tv","radio","dolap"};
ArrayList<Urun> liste = new ArrayList<Urun>();
for(int i=0;i<fiyatlar.length;i++)
{
liste.add(new Urun(isimler[i], fiyatlar[i]));
}
return liste;
}
}
Hiç yorum yok:
Yorum Gönder