Mehmet Ethem SULAN :: Java Recursive Methods :: How to Do Preorder Traversal in Binary Tree in Java(Java ile ikili ağaç oluşturma örneği)

Tree
Dugum bir nesnedir.Kendi degerini ve sag ve sol degerleri tutuyor
AnaSinif.java

package ethemsulan.com;
public class AnaSinif {
    public static void main(String[] args) {
//Nesne olusturup teker teker dugum ekleniyor ve sonrada sirayla yaziliyor
    AgacOlustur agacNesne= new AgacOlustur();
    agacNesne.rootOlustur(55);
    agacNesne.rootOlustur(21);
    agacNesne.rootOlustur(17);
    agacNesne.rootOlustur(111);
    agacNesne.rootOlustur(33);
    agacNesne.rootOlustur(27);
    agacNesne.rootOlustur(8);
    agacNesne.rootOlustur(34);
    agacNesne.rootOlustur(22);
    agacNesne.siraylaYaz(agacNesne.getKokDugum());
    }
}

Orjinal kod
NodeOlustur.java

package ethemsulan.com;
public class NodeOlustur {
//Bir sonraki nodlari tutmayi saglar.
//Bu nesne yani dugum olusturuldugu yerde sag-sol ve ve value
//degerleri kendi icinde barindirir.
    private int deger;
    private NodeOlustur sag;
    private NodeOlustur sol;

    public int getDeger() {
        return deger;
    }
    public void setDeger(int deger) {
        this.deger = deger;
    }
    public NodeOlustur getSag() {
        return sag;
    }
    public void setSag(NodeOlustur sag) {
        this.sag = sag;
    }
    public NodeOlustur getSol() {
        return sol;
    }
    public void setSol(NodeOlustur sol) {
        this.sol = sol;
    }
}

Orjinal kod
AgacOlustur.java

package ethemsulan.com;
public class AgacOlustur {
//baslangicta kokDugum yani ana dugum yoksa olusturulur
    private NodeOlustur kokDugum;

    public NodeOlustur getKokDugum() {
        return kokDugum;
    }

    public void setKokDugum(NodeOlustur kokDugum) {
        this.kokDugum = kokDugum;
    }
//kokDugum(yoksa) olusturulduktan sonra roota bagli yapraklar olusturan metod cagrilir.
public void rootOlustur(int sayi)
{
    if(kokDugum == null)
    {
        kokDugum = new NodeOlustur();
        kokDugum.setDeger(sayi);
    }
    yaprakOlustur(kokDugum,sayi);
}
public void yaprakOlustur (NodeOlustur ust,int sayi)
{
//degeri ana dugumdeki degerden buyukse sagda yeni node olusturulur
    if (sayi>ust.getDeger())
    {

        if(ust.getSag()== null)
        {
            ust.setSag(new NodeOlustur());
            ust.getSag().setDeger(sayi);
            System.out.println(ust.getDeger()+"-->sagındaki deger-->" +ust.getSag().getDeger());
        }
//dugum olusturan metodu tekrar cagirir.
        yaprakOlustur(ust.getSag(),sayi);
    }
//degeri ana dugumdekiki degerden kucukse solda dugum olustur
     if (sayi<ust.getDeger())
    {
        if(ust.getSol()== null)
        {
//dugum yoksa olustur degeri ekle ve ekrana yaz
            ust.setSol(new NodeOlustur());
            ust.getSol().setDeger(sayi);
            System.out.println(ust.getDeger()+"-->solundaki deger-->" +ust.getSol().getDeger());
        }
//metodu tekrar cagir
        yaprakOlustur(ust.getSol(),sayi);
    }
}
//Degerleri sirayla(kucukten-buyuge) ekrana yazar
public void siraylaYaz (NodeOlustur ust)
{
//sag yapraga yani sona ulasmayana kadar agaci tara ve once sol sonra da sag degeri yaz
    if (ust != null)
    {
        siraylaYaz(ust.getSol());
        System.out.print(ust.getDeger());
        siraylaYaz(ust.getSag());
    }
    System.out.println();
}
}

Orjinal kod

Write a Comment

Let me know what you think?