この BST では、searchbst 関数は完全に検索していますが、この関数は常に 0 を返しています。私がそうするようにプログラムしたので、5または8を与えていません。この問題が原因であるコードのエラーは何ですか
#include<iostream>
using namespace std;
struct bstnode{
bstnode *lchild;
int data;
bstnode *rchild;
};
void creatbst(bstnode *&T,int k){
if(T=='\0'){
T=new(bstnode);
T->data=k;
T->lchild='\0';
T->rchild='\0';
}
else if(k<T->data){
creatbst(T->lchild,k);
}
else if(k>T->data){
creatbst(T->rchild,k);
}
}
int searchbst(bstnode *T,int k){
if(T=='\0')
return 5;
else{
if(k<T->data)
searchbst(T->lchild,k);
else if(k>T->data)
searchbst(T->rchild,k);
else
return 8;
}
}
int main(){
bstnode *T;
T='\0';
creatbst(T,36);
creatbst(T,20);
creatbst(T,75);
creatbst(T,42);
creatbst(T,8);
creatbst(T,31);
creatbst(T,25);
creatbst(T,3);
creatbst(T,80);
cout<<endl<<"searching for ";
cout<<searchbst(T,3);
cout<<endl<<"searching for ";
cout<<searchbst(T,1);
return 0;
}