Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在二叉搜索树中插入重复的键?_Java_Binary Search Tree - Fatal编程技术网

Java 在二叉搜索树中插入重复的键?

Java 在二叉搜索树中插入重复的键?,java,binary-search-tree,Java,Binary Search Tree,现在,当我将键/值插入BST,然后搜索它们时,我会得到空值。我想得到一些关于如何处理重复钥匙的帮助 private Node put(Node root, final Key key, final Value value) { if (root == null) return new Node(key, value, 1); final int result = key.compareTo(root.key); if (result >

现在,当我将键/值插入BST,然后搜索它们时,我会得到空值。我想得到一些关于如何处理重复钥匙的帮助

    private Node put(Node root, final Key key, final Value value) {
    if (root == null)
        return new Node(key, value, 1);

    final int result = key.compareTo(root.key);

    if (result > 0)
        root.right = put(root.right, key, value);
    else if (result <= 0) {
        root.left = put(root.left, key, value);
    }
    root.size = size(root.left) + size(root.right) + 1;
    return root;
}

private Value get(final Node root, final Key key) {
    if (root == null)
        return null;

    final int result = key.compareTo(root.key);

    if (result > 0)
        return get(root.right, key);
    else if (result <= 0)
        return get(root.left, key);
    return root.value;
}
private Node put(节点根、最终密钥、最终值){
if(root==null)
返回新节点(键,值,1);
最终int结果=key.compareTo(root.key);
如果(结果>0)
root.right=put(root.right,key,value);
else if(结果0)
返回get(root.right,key);

else if(resultget代码需要==检查。0) 返回get(root.right,key); 否则如果(结果<0) 返回get(root.left,key); 否则如果(结果==0) 返回root.value; 其他的 返回null;//找不到密钥 }
您的get代码需要==检查。您的帐户(0) 返回get(root.right,key); 否则如果(结果<0) 返回get(root.left,key); 否则如果(结果==0) 返回root.value; 其他的 返回null//找不到密钥 }
谢谢,现在我只收到第一份副本。我是否也必须更改put方法中的某些内容?您是说要在二进制搜索树中插入具有不同值的重复键?这不是二进制搜索树的工作原理。请看,这正是我想要的,但我很难实现它。这违反了二进制搜索规则。应阻止重复键或替换旧值。通常会替换旧的值。如果希望每个键有多个值,可以使每个节点都有一个值列表values=new ArrayList(),而不是一个值。当您插入时,您将添加到该列表中。这可以达到你想要的,但我仍然觉得这是不明智的。谢谢,现在我只得到了第一份副本。我是否也必须更改put方法中的某些内容?您是说要在二进制搜索树中插入具有不同值的重复键?这不是二进制搜索树的工作原理。请看,这正是我想要的,但我很难实现它。这违反了二进制搜索规则。应阻止重复键或替换旧值。通常会替换旧的值。如果希望每个键有多个值,可以使每个节点都有一个值列表values=new ArrayList(),而不是一个值。当您插入时,您将添加到该列表中。这可以实现你想要的,但我仍然觉得这是不明智的。
private Value get(final Node root, final Key key) {
    if (root == null)
        return null;

    final int result = key.compareTo(root.key);

    if (result > 0)
        return get(root.right, key);
    else if (result < 0)
        return get(root.left, key);
    else if (result == 0)
        return root.value;
    else
        return null; //key not found
}