IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   Java (https://www.ircforumlari.net/java/)
-   -   Java ile Ağaç Yapısı (https://www.ircforumlari.net/java/689600-java-ile-agac-yapisi.html)

Kaf_Dağı 18 Mart 2015 14:59

Java ile Ağaç Yapısı
 
Kod:

public class Treee {
    Node kok;
    public Treee(){
        kok = null;
    }
    public **** 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 **** 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 ****** 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 **** 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 **** 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 **** postOrder(Node kok){
        if(kok.sol != null){
            postOrder(kok.sol);
        }
        if(kok.sag != null){
            postOrder(kok.sag);
        }
        System.out.println(kok.data);
    }
}



Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 19:39.

Powered by vBulletin® Version 3.8.8 Beta 3
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2024 IRCForumlari.Net