我有一个方法可以检查BST的节点是否等于另一棵树的另一个节点(在输入内给出) - 无论结构如何。
这是我到目前为止所看到的,但似乎我错过了一些东西。
public boolean sameValues(BSTInterface<T> other)
{
if(other == null && this != null)
return false;
else if(other.size() == 0 && this.size() == 0)
return true;
Object temp = null;
Object temp2 = null;
while(other.preorderIterator().hasNext() && this.preorderIterator().hasNext())
{
temp = other.preorderIterator().next();
temp2 = this.preorderIterator().next();
if(temp.equals(temp2))
return true;
else
return false;
}
return false;
}
有人知道更好的方法吗? 感谢。
答案 0 :(得分:0)
由于多余的while()
,您的return false
循环会在第一次次迭代中终止。它应该看起来有点像:
while(other.preorderIterator().hasNext() && this.preorderIterator().hasNext())
{
temp = other.preorderIterator().next();
temp2 = this.preorderIterator().next();
if(temp.equals(temp2)) // same data found?
return true; // return success
// else // do not return! continue!
// return false;
}
return false;
}