# Binärer Suchbaum Höhe



## MisterX (7. Dez 2006)

Hallo,

vielleicht kann mir ja hier jemand helfen. Ich möchte bei einem binären Suchbaum die Höhe eines Knoten bestimmen. Nur leider tut die Funktion so wie ich es will nicht.
Ich hab es mit folgender Methode versucht:

```
public int height(Node n){
        if (n.isLeaf()) return 0;
        else return Math.max(height(n.left),height(n.right))+1;
    }
```

Beim ersten Knoten, den ich einfüge stimmt die Höhe von 0 noch, und beim einfügen des 2 Knoten rennt das Programm in eine NullPointerException.

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException


Brauch Hilfe.

Danke  :cry:


----------



## DaKo (7. Dez 2006)

Wenn ich dich richtig verstehe:

Du hast 2 Knoten (1 Wurzel + 1 Blatt).

Dann ist die NPE durchaus richtig. Das Blatt ist entweder 'left' von der Wurzel, dann ist 'right' null oder umgekehrt


----------



## MisterX (7. Dez 2006)

Ok. Aber wie mach ich's dann ohne eine NPE? Ich muß ja nach links, wie nach rechts suchen?


----------



## WieselAc (7. Dez 2006)

frag ab ob das aktuelle null ist. dann hast du es.

EDIT:

CIh gehe mal davon aus, das dein Baum so aufgebaut ist, ansonsten müsste ich den Konstruktor deines knotens sehen.


----------



## DaKo (7. Dez 2006)

Vorher auf null abfragen


```
public int height(Node n){
        int heightLeft=0,heightRight=0;
        if (n.isLeaf()) return 0;
        else {
             if (n.left != null)
                 heightLeft = height(n.left);
             if (n.right != null)
                  heightRight=height(n.right);
             return Math.max(heightLeft,heightRight)+1;
    }
```


----------



## DaKo (7. Dez 2006)

alternativ:


```
public int height(Node n){
        if (n==null) return 0;
        if (n.isLeaf()) return 0;
        return Math.max(height(n.left),height(n.right))+1;
    }
```


----------



## MisterX (7. Dez 2006)

Vielen vielen Dank. Jetzt tuts. Hier auf das Forum ist immer wieder verlaß.


----------

