java - 如何处理二叉树中的重复项?

标签 java binary-tree

这是它的测试部分,我不断得到 2 的返回而不是 fff。 我需要在底部实现以返回重复项。 ?处理重复项,但不试图阻止它们插入它,只需返回正确的值。

        System.out.println("\nInsering duplicate key: ...");
        tree.insert(2, "fff");
        testFind(tree.find(2), 2, "fff");

我需要处理重复项并返回“fff”,上面^是测试代码底部需要进一步实现。

    public V find(K key) {
        Node node = findHelper(key, root);
        if (node == null) {
            return null;
        } else {
            return (V) node.entry.value;
        }
    }


    public Node findHelper(K key, Node node) {
        if (node.entry.key.compareTo(key) == 0) {
            return node;
        }
        else if (node.entry.key.compareTo(key) > 0) {
            if (node.leftChild == null) {
                return null;
            } else {
                return findHelper(key, node.leftChild);
            }
        } else if (node.entry.key.compareTo(key) < 0) {
            if (node.rightChild == null) {
                return null;
            } else {
                return findHelper(key, node.rightChild);
            }
        }
        return node;
    }

最佳答案

如果节点条目键等于查询,您也应该继续在子节点中搜索:

public List<Node> findHelper(K key, Node node) {

    int c = node.entry.key.compareTo(key);

    if (c == 0) {
         List<Node> result = new ArrayList<>();
         result.add(node);
         result.addAll(findHelper(key, node.leftChild));
         result.addAll(findHelper(key, node.rightChild));
         return result;        

    } else if (c > 0) {
        if (node.leftChild == null) 
            return Collections.emptyList();
        else 
            return findHelper(key, node.leftChild);

    } else {
        if (node.rightChild == null) 
            return Collections.emptyList();
        else 
            return findHelper(key, node.rightChild);
    }
}

关于java - 如何处理二叉树中的重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29814841/

相关文章:

java - spring mvc 应用程序的正确配置

java - 在谷歌应用引擎的数据存储中更新查询 - java

java - Jersey 单元测试 : in memory container vs grizzly

c - C 中的二叉树 : Traversal specified level

python - 使用特定格式以级别顺序打印 BFS(二叉树)

c++ - 无法编写用于构建霍夫曼树的函数

binary-tree - 二叉树的应用有哪些?

java - 如何构建哈希码以支持对称性

java - 处理 Javers 审计中的架构更改

java - 在 Java 中构建未排序的二叉树的最有效方法是什么?