AVL-Baum für Java

Ich bin mir nicht sicher, ob ich hier mache, richtig, wie dies ist meine erste Zeit-Codierung mit Knoten. Aber hier ist mein code bisher, falls jemand vorbei schauen und mir helfen, mit Verständnis, wenn ich mache etwas falsch. Auch mein insert/remove-Methoden geben mir eine harte Zeit. Der professor gab uns den pseudocode für das, aber ich kann nicht scheinen, um zu begreifen, wie es zu deuten in Java-code, wie ich es nie getan habe, diese Art von code vor. Vor allem, weil es ist eine if-Anweisung, prüft die Höhen, um zu sehen, wenn der Baum balanciert ist, wie würde ich das umsetzen, in dieser Höhe? Tip oder jede Hilfe ist sehr dankbar, ich Hänge schon länger auf diese für eine Weile. Danke!

Ich glaube auch nicht, ich habe mein Konstruktor richtig und ich bin unsicher. Die Rückkehr in die einfügen/entfernen kann ignoriert werden, es war einfach da, um sicherzustellen, dass der rest der der code kompiliert wird.

public class AvlNode{

    public static void main(String[]args){

    }
    //constructor
    public class AvlTreeNode{
        private int num;
        private AvlTreeNode left;
        private AvlTreeNode right;

        public AvlTreeNode left(){
            return this.left;
        }

        public AvlTreeNode right(){
            return this.right;
        }

        public int value(){
            return this.num;
        }
    }
    //method to find the number specified on the node
    public AvlTreeNode find(AvlTreeNode t, int x){
        if(t == null){
            return null;
        }
        if( t.value() == x){
            return t;
        }
        else if(x < t.value()){
            return find(t.left(), x);
        }
        else{
            return find(t.right(), x);
        }
    }
    //method to insert a new node and number to a tree
    public AvlTreeNode insert(AvlTreeNode t, int x){
        if(t == null){
            t = new AvlTreeNode(x, null, null);
            return t;
        }
        if(x < t.value()){
            t.left = insert(t.left(), x);
        }
        return t;
    }
    //method to remove a node and number from the tree
    public AvlTreeNode remove(AvlTreeNode t, int x){
        return t;
    }
    //Inorder traversal method, should print out numbers in ascending order if correct
    public void inOrder(AvlTreeNode t){
        if(t != null){
            inOrder(t.left());
            System.out.print(t.value() + " ");
            inOrder(t.right());
        }
    }
    //single rotation of nodes to balance tree, rotating leftwards
    public static AvlTreeNode singleRotateWithLeft( AvlTreeNode k1){
        AvlTreeNode k2 = k1.left;
        k1.left = k2.right;
        k2.right = k1;
        return k2;
    }
    //single rotation of nodes to balance tree, rotating rightwards
    public static AvlTreeNode singleRotateWithRight( AvlTreeNode k2){
        AvlTreeNode k1 = k2.right;
        k2.right = k1.left;
        k1.left = k2;
        return k1;
    }
    //double rotation of nodes towards the left
    public static AvlTreeNode doubleRotateWithLeft( AvlTreeNode k3){
        k3.left = doubleRotateWithRight(k3.left);
        return doubleRotateWithLeft(k3);
    }
    //double rotation of nodes towards the right
    public static AvlTreeNode doubleRotateWithRight( AvlTreeNode k2){
        k2.right = doubleRotateWithLeft(k2.right);
        return doubleRotateWithRight(k2);
    }
}
InformationsquelleAutor user2318083 | 2013-10-20
Schreibe einen Kommentar