java - BST 相等性检查

标签 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;
}

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

最佳答案

由于多余的return false,您的while()循环在第一次迭代中终止。它应该看起来有点像:

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

关于java - BST 相等性检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31172688/

相关文章:

java - 将 jdbc 连接到 openshift 上的 MySql 服务器时出现问题

c++ - 在先前已在 BST 中删除节点后尝试插入时出现运行时错误

objective-c - 什么是Objective-C 中的@[] 和@{}?

java - 为什么这个 equals & hashCode 覆盖不会导致异常或错误?

java - 是Java Jackson ObjectWriter.ObjectWriter.writeValueAsString(obj);稳定的?

java - 公共(public)共享首选项导致应用程序崩溃

java - Java使用的内存远大于堆大小(或正确大小的Docker内存限制)

java - 如何将 ArrayList 传递给以集合作为输入的方法

c++ - C++ 中的二叉搜索树

c - 如何将 Child 和 Child 添加到现有节点?