Binärbaum Suche

DunKing

Mitglied
Hallo Leute,
Da ich keinen allgemeinen Fragenthread gefunden habe frage ich einfach mal so:

Code:
public class BinaryTree{
int info;
BinaryTree left;
BinaryTree right;

public BinaryTree (int info, BinaryTree left, BinaryTree right){
this. info = info;
this. left = left;
this.right = right;

Zu dieser Klasse soll ich nun eine Methode "isBinaryTree" erstellen welche überprüft ob ein ein Baum auch tatsächlich ein Binärbaum ist.
Soll bedeuten jede Zahl ist größer als sein linker Knoten und kleiner als sein rechter.

Mein Code dazu sieht so aus:
Code:
public boolean isBinaryTree(){
if (this == null){
return true;
}
if (this.left.info < this.info  &&  this.right.info > this.info){
return (left.isBinaryTree() && right.isBinaryTree);
else return false;
}

Ich wollte fragen ob das so richtig ist, den die Lösung schaut etwas anders aus und ich kann leider momentan nicht nachprüfen ob das so funktionieren könnte.
Bin ziemlich neu im Gebiet der Rekursion.

Danke schon mal für die Antworten!
 
Zuletzt bearbeitet:
Java:
public boolean isBinaryTree(){
if (this == null){
return true;
}

überdenke das nochmal 🙂

Du prüfst hier ob die ausführende Instanz null ist und falls ja liefert du True

Ich glaube du musst eher prüfen ob die ausführende Instanz nicht null also ungleich null ist
Code:
!=
 
Zuletzt bearbeitet:
Ich kann den Fehler leider nicht ganz nachvollziehen... 🙂

Also ich dachte mir das die Abfrage auf == null sozusagen das Ende bedeutet.
Sollten beide Seiten bis zum Ende durchgelaufen sein, heißt das doch das die Eigenschaften des Binärbaums übereinstimmen oder?
Falls es aber irgendwo ein Problem gab, liefert dieser Teil "false". Da nun alle Ergebnisse miteinander "ver-und-et" werden, gibt die ganze Funktion desshalb false zurück.
Ansonsten würde die Funktion "true" zurückgeben.

Als das hab ich mir dabei gedacht, vielleicht hilfts dir mir zu helfen 🙂
 
Hmm wäre denn :

Code:
if (this.left == null && this.right == null)
return true;
,besser?
Stimmt meine Grundidee bezüglich der Aufgabe überhaupt?

[Noch eine Frage die nichts mit dem Thema zu tun hat:
Code:
for ( int i = 21 ; i>=0 ; --i)
System.out.print(i);
Wieso wird diese Schleife 22 mal ausgeführt? Sollten das nicht eigentlich 21 mal sein, da zuerst dekrementiert und dann ausfegührt wird?]

Danke!
 

Zurück
Oben