[infostudents] Info 2 - Uebb10 - Aufgabe 2

  • From: Felix Ruzzoli <f.ruzzoli@xxxxxxxxx>
  • To: Infolist <infostudents@xxxxxxxxxxxxx>
  • Date: Sun, 1 Jul 2007 15:27:54 +0200

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

im anhang..
hat jemand eine gute idee, wie man die baeume visualisieren kann ohne
zuviel aufwand zu betreiben?
mfg fx
- -- 
Felix Ruzzoli
eMail: f.ruzzoli@xxxxxxxxx oder ruzzoli@xxxxxxxxxxxxxxxxxxxxxxxxxx
Jabber: memmaker@xxxxxxxxxxxxx
ICQ: 21907473

#-----------------------------------------------------------------#

Nichts is so wie es scheint..
Alles ist erlaubt..
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFGh6vetsta2pU07v0RAnQkAJ99C59FEg4THYFhHb8GGJPV8EXgmgCdHm/r
h74bQiVyoVYJTWHGNfHIX/A=
=SN5l
-----END PGP SIGNATURE-----
public class ChildSiblingNode {
        int key;
        ChildSiblingNode parent;
        ChildSiblingNode child;
        ChildSiblingNode left;
        ChildSiblingNode right;
        
        /**
         * Erzeugt einen neuen Knoten mit gegebenem Schlüssel.
         * 
         * @param key der Schlüsselwert
         */
        public ChildSiblingNode(int key) {
                this.key = key;         
                this.left=this;
                this.right=this;
        }
        
        /**
         * Fügt diesem Knoten einen neuen Knoten mit gegebenem Schlüssel 
         * als neuen Sohn hinzu. Der enue Knoten wird zurückgegeben.
         *  
         * @param key der Schlüssel des neuen Knotens
         */
        public ChildSiblingNode addChild(int key) {
                ChildSiblingNode newnode = new ChildSiblingNode(key);
                if (this.child==null) {
                        // noch kein sohn vorhanden..
                        this.child = newnode;
                        this.child.parent = this;
                }
                else {
                        // schon ein sohn vorhanden..
                        ChildSiblingNode leftnode = this.child.left;    // save 
ref. to nodes being modified..
                        ChildSiblingNode rightnode = this.child;
                        // declare the new siblings of the newnode..
                        newnode.right = rightnode;
                        newnode.left = leftnode;
                        newnode.parent = this;
                        // point the other nodes to the newnode..
                        rightnode.left = newnode;
                        leftnode.right = newnode;                       
                }
                return newnode;
        }
        
        /**
         * Trennt diesen Knoten (samt all seinen Nachkommen) vom Vater 
         * und aus der Liste seiner Geschwister ab.
         */
        public void cut() {
                // vom vater abtrennen..
                this.parent.child = null;
                this.parent = null;
                // aus der liste der geschwister abtrennen..
                if (this.left!=this) {
                        // wir haben geschwister..
                        ChildSiblingNode leftnode = this.left;
                        ChildSiblingNode rightnode = this.right;
                        // auskoppeln
                        leftnode.right = rightnode;
                        rightnode.left = leftnode;
                        // und vergessen..
                        this.left = this;
                        this.right = this;
                }
        }
}

Attachment: child-sibling-tree.jpg
Description: JPEG image

public class TreeTester {
        public static void main(String args[]) {
                ChildSiblingNode root = new ChildSiblingNode(2);
                ChildSiblingNode leftpart = root.addChild(13).addChild(15);
                leftpart.addChild(16);
                leftpart.addChild(31);
                leftpart.addChild(29);
                root.addChild(45);
                ChildSiblingNode rightpart = root.addChild(8);
                rightpart.addChild(36);
                rightpart.addChild(21).addChild(26);
        }       
}

Other related posts:

  • » [infostudents] Info 2 - Uebb10 - Aufgabe 2