java - 二叉搜索树相加算法的实现

标签 java algorithm data-structures binary-tree binary-search-tree

我必须在 java 中为 BST 实现一个添加方法,但无法使我的添加功能起作用。有人可以帮帮我吗?

private boolean add(E x, BinaryNode<E> currentNode){

        if (currentNode == null){
            currentNode = new BinaryNode<>(x);
            size++;
            return true;
        }

        if (currentNode.element.compareTo(x) == 0){
            return false;
        }

        else if((currentNode.element.compareTo(x) < 0)){

            if(currentNode.left == null){
                currentNode.left = new BinaryNode<>(x);
                size++;
                return true;

            } else {
                add(x, currentNode.left);
            }

        }

        else if(currentNode.element.compareTo(x) > 0){

            if(currentNode.right == null){
                currentNode.right = new BinaryNode<>(x);
                size++;
                return true;

            } else {
                add(x, currentNode.right);
            }

        }

        return false;
    }

    public boolean add(E x){
        return this.add(x, root);
    }

最佳答案

我看到的一个问题是,当您分配根元素时,您将其分配给局部变量。这显然行不通。

private boolean add(E x, BinaryNode<E> currentNode){
  /////// REMOVE
        if (currentNode == null){
            currentNode = new BinaryNode<>(x);
            size++;
            return true;
        }
  ///////

然后添加这个

public boolean add(E x){
    if( root == null ) {
      root = new BinaryNode<>(x);
      size++;
      return true;
    }  else
      return this.add(x, root);
}

关于java - 二叉搜索树相加算法的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54853987/

相关文章:

python - 找到达到多个级别的方法

java - Android 专家能否解释奇怪的 USB 主机行为

java - 将变量保留在 session 范围内而不将其设为静态?

javascript - (使用 JS 过滤)为什么 "#"不起作用,而字母表中的其他所有内容都起作用

c - 动态列表 - 未知类型名称节点

python - 将日志文件解析为其嵌套的开始和结束对的算法/Python

python - 是否有更快的方法来搜索一个值是否在给定间隔列表的间隔内?

java - 如何修复 findbugs "Method accesses list or array with constant index"发现的错误

java - 在短时间内用 Java 执行数百万个任务?

algorithm - 嵌套二叉搜索树的复杂性