Ich bin ein Anfänger Java-Schüler und habe eine Hausaufgabe, die mich erfordert, eine einfache BST mit Rekursion zu bauen. Sollte einfach sein, aber es gibt mir Ärger.Einfügen in eine BST, "Die Methode einfügen (myclass.TreeNode, int) ist nicht definiert für den Typ myclass"
Der Constructor Klasse und Methode main() sind mir zur Verfügung gestellt als
public static class TreeNode
{
TreeNode LeftLink;
int Content;
TreeNode RightLink;
}
// end class TreeNode
public static void main(String[] args) throws IOException
{
TreeNode T = null;
int H, i;
T = BuildSearchTree();
H = Height(T);
System.out.println("The number of nodes on the tree is " + NodeCount(T));
System.out.println("The height of the tree is " + H);
for (i = 0; i <= H; i++)
System.out.println("The number of nodes on level " + i + " is " + CountLevel(T,i));
// end for
}
Meine Aufgabe folgt, ist zu füllen eine BinarySearchTree Methode zu erstellen, ohne bereits zu modifizieren, etwas zu mir zur Verfügung gestellt.
Die Methode "BinarySearch Tree" fordert eine Datei an, die vom Benutzer mit Ganzzahlen gefüllt wird, und rekursiv eine BST daraus erstellt.
Mein Compiler (Eclipse) wird unter dem Titel meiner Einsatz Methode mir einen Fehler geben „Die Methode insert (myclass.TreeNode, int) ist nicht definiert für den Typen myclass“
Ich glaube, das ist etwas zu tun hat mit dem Weg T = BuildSearchTree(); ist in der Hauptmethode erklärt, aber ehrlich gesagt, ich habe keine Ahnung, was los ist.
Was ich bisher habe, ist
public static TreeNode BuildSearchTree() throws IOException {
Scanner Keyboard = new Scanner(System.in);
System.out.println("enter the name of your word file (please include ''.data'' or ''.txt'' when inputting file name) (number of words in the word file must be less than 30.)");
String datafile = Keyboard.next();
Scanner InputFile = new Scanner(new File(datafile));
int[] data = new int[1000];
while(InputFile.hasNext()){
int i;
data[i]=InputFile.nextInt();
i++;
} //end while
for(int i=0; i<1000; i++){
TreeNode T = insert(T, data);} //end for
private static TreeNode insert(TreeNode node, int content)
{
if (node == null)
{
node.Content=content;
}
else if (content <= node.Content)
{
insert(node.LeftLink, content);
}
else
{
insert(node.RightLink, content);
}
}
return node;
}//end insert method
return T;
}//end BuildSearchTree
Warum ist ' in 'BuildSearchTree' deklarieren? – 4castle
Laut meinem Professor kann ich nur den Code in BuildSearchTree bearbeiten. Ich könnte die ganze Sache leicht selbständig machen, wenn ich meine Einfügemethode nach draußen stellen könnte. –
Am Ende der BuildSearchTree-Methode fehlt eine geschlossene geschweifte Klammer. Ich würde * nicht * empfehlen, enge geschweifte Klammern an die Enden von Zeilen mit Code zu setzen, weil es die automatische Einrückung durcheinander bringt. Wenn Sie diese Klammer auf eine eigene Linie setzen und dann automatisch einrücken, ist dies einfacher zu sehen. – templatetypedef