これは、12年生の二分木の割り当てからの質問です。BTreeクラスが木の高さを返すメソッドが必要です。ツリーにノードが1つある場合、高さは0だと思いますが、それについてはよくわかりません。今日は先生に聞いてみます。
しかしとにかく、これが私のコードです。何が問題なのかわかりません。
public int height(){
if(root == null){
return -1;
}
return height(root, 0, 0);
}
public int height(BNode branch, int depth, int ans){
if(depth>ans){
ans=depth;
}
if(branch.getLeft()!=null){
depth+=1;
return height(branch.getLeft(), depth, ans);
}
else if(branch.getRight()!=null){
depth+=1;
return height(branch.getRight(), depth, ans);
}
return ans;
}
これはテストクラスです:
BTree bTree = new BTree();
bTree.add(50);
bTree.add(60);
bTree.add(40);
bTree.add(35);
bTree.add(55);
bTree.add(45);
bTree.add(51);
bTree.display();
System.out.println(bTree.height());
この木は高さが3であるはずですが、戻ってきます:35 40 45 50 51 55 60 2
助けていただければ幸いです、ありがとう。