私はJavaの初心者で、再帰を使用して簡単なBSTを作成する必要がある宿題があります。シンプルでなければならないが、それは私にいくつかの問題を与えている。BSTに挿入すると、 "メソッドinsert(myclass.TreeNode、int)はmyclass型のために定義されていません"
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
}
私のタスクは、すでに私に与えられ、何も変更せずにBinarySearchTreeメソッドを作成するために満たすことであるが、以下のように
コンストラクタクラスとmain()メソッドは、私に提供されています。
BinarySearch Treeメソッドは、ユーザーからの整数で埋められたファイルを要求し、BSTを再帰的に構築します。
私のコンパイラ(Eclipseのは)私に私insertメソッドのタイトルの下にエラーを与えている「方法を挿入(myclass.TreeNode、intは)MyClass型のために定義されていません」
私は、これは何かを持っていると信じてT = BuildSearchTree();という方法でメインの方法で宣言されていますが、率直に言って、何が起こっているのか分かりません。私が持っているもの
がこれまでに挿入するコードを開始する前に()
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
がなぜ 'です:あなたが何かのようにする必要があります1000
あなたのwhileループのリテラル値ではなく挿入するために、実際の呼び出しの周りにループ内のファイルから読み込む項目の数を使用する必要がありますinsert'は 'BuildSearchTree'の中で宣言されていますか?私の教授によると – 4castle
、私はBuildSearchTree内のコードを編集することしかできません。私は私のインサートメソッドを外に置くことができれば、私はこのすべてを自分で簡単に動かすことができます。 –
BuildSearchTreeメソッドの最後に中括弧がありません。自動インデントを駄目にするので、コードの行の終わりに中かっこを置くことをお勧めしません。そのブレースを独自の行に置き、自動インデントした場合、これは見やすくなります。 – templatetypedef