这是我的代码,我收到错误,说“回调未定义”,我很困惑,即使我已将函数作为参数发送到搜索功能,它也将其视为未定义。
class Tree{
constructor(){
this.data;
this.left;
this.right;
}
Insert(data)
{
if(this.data)
{
if(this.data<data)
{
if(this.right)
{
this.right.Insert(data)
}
else{
this.right=new Tree();
this.right.Insert(data)
}
}
else{
if(this.left)
{
this.left.Insert(data)
}
else{
this.left=new Tree();
this.left.Insert(data)
}
}
}
else{
this.data=data;
}
}
Display(){
if(this.left)
{
this.left.Display();
}
console.log(this.data);
if(this.right)
{
this.right.Display();
}
}
Search(data,callback){
if(data==this.data)
{
console.log("found")
callback("found")
}
else if(data>this.data)
{
if(this.right)
{
this.right.Search(data);
}
else callback("not found")
}
else if(data<this.data){
if(this.left)
{
this.left.Search(data);
}
else callback("not found")
}
}
}
var k =new Tree();
k.Insert(41);
k.Insert(34);
k.Insert(53);
k.Insert(384);
k.Search(34,function (res){
console.log(res)
});
你们可以帮帮我吗?非常感谢提前
答案 0 :(得分:4)
在search
功能中,如果没有Serach
参数
callback
Search(data,callback){
if(data==this.data)
{
console.log("found")
callback("found")
}
else if(data>this.data)
{
if(this.right)
{
this.right.Search(data, callback);
}
else callback("not found")
}
else if(data<this.data){
if(this.left)
{
this.left.Search(data, callback);
}
else callback("not found")
}
}
答案 1 :(得分:3)
在这部分
else if(data>this.data)
{
if(this.right)
{
this.right.Search(data);
}
您不发送回叫,每次调用时都应发送回叫。
<强> 解决方案 强>
else if(data>this.data)
{
if(this.right)
{
this.right.Search(data, callback);
}