BST平等检查

时间:2015-07-01 22:23:18

标签: java binary-search-tree equals

我有一个方法可以检查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;
}

有人知道更好的方法吗? 感谢。

1 个答案:

答案 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;
}