Java ile Ağaç Yapısı

Bu yazıda Java ile ağaç yapısının bilinmesi gereken metotlarını göreceksiniz.

Bu yazıda Java ile ağaç yapısının bilinmesi gereken metotlarını göreceksiniz.


public class Treee {

    Node kok; 

    public Treee(){

        kok = null;

    }

    public void ekle(int data){ //ekleme metodu

        Node x = new Node();

        x.data = data;

        if(kok == null){

            kok = x;

        }

        else{

            Node current = kok;

            Node parent;

            while(true){

                parent = current;

                if(x.data < current.data){

                    current = current.sol;

                    if(current == null){

                        parent.sol = x;

                        return;

                    }

                }

                else{

                    current = current.sag;

                    if(current == null){

                        parent.sag = x;

                        return;

                    }

                }

            }

        }

    }

    public void delete(int key){

        Node current = kok;

        Node parent = kok;

        boolean isLeftTree = true;

        if(kok == null){

            System.out.println("Silinecek Ağaç Yok");

        }

        while(current.data != key){//sileceğimiz elemanı buluyoruz

            parent = current;

            if(key < current.data){

                isLeftTree = true;

                current = current.sol;

            }

            else{

                isLeftTree = false;

                current = current.sag;

            }

            if(current == null){

                System.out.println("Eleman Bulunamadı");

            }

        }

            if(current.sag == null && current.sol == null){ //sileceğimiz elemanın sağ ve solunda eleman yoksa

                if(current == kok){

                    kok = null;

                }

                else if(isLeftTree){

                    parent.sol = null;

                }

                else

                    parent.sag = null;

            }

            else if(current.sag == null){//sileceğimiz elemanın sağında eleman yoksa

                if(current == kok){

                    kok = parent.sol;

                }

                else if(isLeftTree){

                    parent.sol = current.sol;

                }

                else

                    parent.sag = current.sol;

            }

            else if(current.sol == null){//sileceğimiz elemanın solunda eleman yoksa

                if(current == kok){

                    kok = parent.sag;

                }

                else if(isLeftTree){

                    parent.sol = current.sag;

                }

                else

                    parent.sag = current.sag;

            }

            else{                       //sileceğimiz elemanın iki tane çocuğu varsa

                Node successor = getSuccessor(current);

                if(current == kok){

                    kok = successor;

                }

                else if(isLeftTree){

                    parent.sol = successor;

                }

                else{

                    parent.sag =successor;

                }

                successor.sol = current.sol;

            }

    }

    private Node getSuccessor(Node delNode) {

              Node successorParent = delNode;

              Node successor = delNode;

              Node current = delNode.sag;                       

              while(current != null){                                       

                    successorParent = successor;

                    successor = current;

                    current = current.sol;                    

                    }

                         if(successor != delNode.sag){                

                    successorParent.sol = successor.sag;

                    successor.sag = delNode.sag;

                    }

            return successor;

}



    public int arama(int data){

        Node current = kok;

        while(current != null){

            if(current.data == data){

                return data;

            }

            else if(data < current.data){

                current = current.sol;

            }

            else

                current = current.sag;

        }

        return -1111;

    }

    //preorder dolaşma

    public void preOrder(Node kok){

        System.out.println(kok.data);

        if(kok.sol != null){

            preOrder(kok.sol);

        }

        if(kok.sag != null){

            preOrder(kok.sag);

        }

    }

    //inorder dolaşma

    public void inOrder(Node kok){

        if(kok.sol != null){

            inOrder(kok.sol);

        }

        System.out.println(kok.data);

        if(kok.sag != null){

            inOrder(kok.sag);

        }

    }

    //postorder dolaşma

    public void postOrder(Node kok){

        if(kok.sol != null){

            postOrder(kok.sol);

        }

        if(kok.sag != null){

            postOrder(kok.sag);

        }

        System.out.println(kok.data);

    }

}

  • Etiketler;
Ziya Özçelik
Kişisel gelişimini ve yöneticilik bilgisini artıran kitaplar okuyor. Uzun vadeli kariyer hedefi ile çalıştığı kurum bünyesinde kendisini yönetici olarak yetiştirmek ve Türkiye’nin ileri gelen programcılarından olmak istiyor.
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git