myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [JAVA] allgemeiner unsortierter Baum Problem (https://mygully.com/showthread.php?t=2281965)

Belenus666 15.04.11 16:58

[JAVA] allgemeiner unsortierter Baum Problem
 
Hallo Leute ich hab n Problem mit folgendem Code.



Das Programm hab ich soweit fertig was ich nicht hin bekomme ist die rekursive Methode höhe die die Höhe des Erzeugten Baumes ausgibt.

Wäre klasse wenn mir jmd von euch helfen könnte.
Grüße
Belenus

haffhaff 15.04.11 19:42

Hey,

mir ist nur etwas ziemlich umständliches eingefallen.
Aber es scheint zu tun.
Hier die Höhe von dem Knoten. Hab es mit einem Array gemacht, da ja geguckt werden muss welcher Knoten die am höchsten ist.

Und die Wurzel benötigt ein

Belenus666 15.04.11 20:47

Super danke dir auf so ne Idee wäre ich nie gekommen ^^
Da hab ich wohl noch einiges zu lernen ^^

superdoc1234 15.04.11 22:55

Ich bin mir sicher das ging auch irgendwie einfacherer. Ich schau ob ich die Unterlagen noch finden kann, ist schon eine Weile her das wir das in Info hatten (~1 Jahr).

//edit:

Code:

private int maxDepth(final int depth, final Node node) {
  if( node != null ) {
      return Math.max( // Der tiefere Zweig zählt
        maxDepth(depth+1, node.left), // Links absteigen
        maxDepth(depth+1, node.right) // Rechts absteigen
      );
  }
  return depth;
}

Quelle: Google. So gehts eleganter ;) Node ist halt ein Knoten.

Belenus666 16.04.11 18:38

Hmm ok das sieht interessant aus. Danke fürs nachforschen ich setz mich da mal mit auseinander.

^^ Für Anregungen bin ich immer dankbar man lernt ja nie aus ;)

haffhaff 16.04.11 20:02

jo das wäre ja zu easy^^

Der post oben funktioniert nur bei einer einfachen Binärbaum dh es gibt nur links und rechts sein Baum kann aber beliebig viele knoten haben....

Im Studium hatte ich auch blos den Binärbaum, aber ich denk mal es gibt auch für deinen bau ne elegantere Lösung.

rabite 17.04.11 13:30

Code:

im Baum:
int getHoehe(){
    if(wurzel!=null) return wurzel.getHoehe();
    return 0;
}

im Knoten:
int getHoehe(){
    return this.getHoehe(1);
}
int getHoehe(int aktuelleHoehe){
    int max=aktuelleHoehe;
    int i;
    for(Knoten k:list){
      i=k.getHoehe(aktuelleHoehe+1);
      if(i>max)max=i;
    }
    return max;
}

so sollte es gehen
-man kann natuerlich direkt im Knoten mit 1 aufrufen und die leere Methode weglassen
-i ist eigendlich ueberfluessig, da Java die Ergebnisse eh zwischenspeichert
-ich finde das so halt schoener

list als Name fuer die Liste der Nachfolgerknoten ist unschoen
public,private,protected,default musste dir selber aussuchen

@haffhaff: list kann nicht null sein, nur leer

Belenus666 17.04.11 18:20

Sieht soweit ganz schlüssig aus. Danke für die Anregung und die Mühe. Ich schau mir das später mal genauer an.

Grüße Belenus


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:15 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.