我一直在用C ++构建二叉树。我尝试通过递归方法添加搜索元素功能。
它无法正常工作。
请参阅以下代码和指南。
bool Binarytree::SearchElement(node* SearchPtr,int key,bool found) {
if(SearchPtr->data==key)
found=true;
if(SearchPtr==NULL || found==true)
return found;
else
{
if(SearchPtr->data>key)
{ cout<<endl<<"Seaching in Left Sub tree"<<endl;
SearchElement(SearchPtr->left,key,found);
}
else
{ cout<<endl<<"Seaching in right Sub tree"<<endl;
SearchElement(SearchPtr->right,key,found);
}
}
}
函数SearchElement
的调用如下:(注意值1不存在于树中)
if(SearchElement(root,1,false))
cout<<endl<<"Element Found"<<endl;
else
cout<<endl<<"Element not Found"<<endl;
答案 0 :(得分:0)
你没有归还任何东西。找到NULL
后,您需要返回false
。如果您找到了需要返回{@ 1}}的元素。一旦您知道元素是否存在,您需要返回所有递归调用。请检查以下代码。
注意:您已经提到了二叉树,并像二叉搜索树一样进行了搜索。考虑到它是一个二叉搜索树,它将是这样的:
true
如果是二叉树,则必须遍历整个树以查找元素是否存在。像这样:
bool Binarytree::SearchElement(node* SearchPtr,int key) {
if(SearchPtr->data==key)
return true;
if(SearchPtr==NULL)
return false;
if(SearchPtr->data < key) //not greater than, but less than
{ cout<<endl<<"Seaching in Left Sub tree"<<endl;
return SearchElement(SearchPtr->left,key);
}
else
{ cout<<endl<<"Seaching in right Sub tree"<<endl;
return SearchElement(SearchPtr->right,key);
}
}