标签:binary-search-tree java recursion
我目前正在编码一个二进制搜索树,并且当前正在尝试实现一个确定二进制树内是否存在节点的递归函数.
这是节点类:
public class BSTNode
{
public String data; // use this for data and key
public BSTNode parent, leftchild, rightchild;
public BSTNode(String key)
{
this.data = key;
}
public Boolean Exists(String search)
{
if(data.equals(search))
return true;
else
{
if (search.compareToIgnoreCase(data) < 0 && leftchild != null)
{
leftchild.Exists(search);
}
else if (search.compareToIgnoreCase(data) > 0 && rightchild != null)
{
rightchild.Exists(search);
}
}
return false;
}
public void Insert(String key)
{
if(key.compareToIgnoreCase(data) < 0)
{
if(leftchild == null)
leftchild = new BSTNode(key);
else
leftchild.Insert(key);
}
else
{
if(rightchild == null)
rightchild = new BSTNode(key);
else
rightchild.Insert(key);
}
}
}
有问题的功能是存在功能.像这样在BST的根节点上调用它:root.Exists(“ Value”);
最终遇到节点时,Exists函数的基本情况正确执行,但是返回false;否则,返回false.退回堆栈时执行语句.我似乎无法更改功能以删除return false;声明.
解决方法:
您忘记使用递归调用返回的值:
public Boolean Exists(String search)
{
if(data.equals(search))
return true;
else
{
if (search.compareToIgnoreCase(data) < 0 && leftchild != null)
{
return leftchild.Exists(search);
}
else if (search.compareToIgnoreCase(data) > 0 && rightchild != null)
{
return rightchild.Exists(search);
}
}
return false;
}
标签:binary-search-tree,java,recursion 来源: https://codeday.me/bug/20191027/1943673.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。