有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将BNode添加到二进制搜索树?

在我们的作业中,有一个问题要求我们在BTree类中编写一个方法。它必须将整数作为参数,然后将其添加到树中。所以我这样做了:

public void add(int v){
    if(root == null){
        root = new BNode(v);
    }
    else{
        add(v, root);
    }
}
public void add(int v, BNode branch){
    if(v == branch.getVal()){
        return;
    }
    if(v<branch.getVal()){
        if(branch.getLeft() == null){
            branch.setLeft(new BNode(v));
        }
        else{
            add(v, branch.getLeft());
        }
    }
    else{
        if(branch.getRight() == null){
            branch.setRight(new BNode(v));
        }
        else{
            add(v, branch.getRight());
        }
    }
}

但我想知道,当方法的参数只是一个BNode时,如何添加?只是:

public void add(BNode b){
    add(BNode.getVal());
}

没有比这更有效的方法了吗?任何帮助都将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    是的,将参数类型转换为另一种方式:使您的方法不期望使用int,而是使用BNode。因此,改变这一点:

    public void add(int v, BNode branch) 
    

    public void add(BNode v, BNode branch)
    

    和变化:

    public void add(int v)
    

    public void add(BNode v)
    

    然后创建一个不同的方法:

    public void add(int b){
        add(new BNode(b));
    }
    

    这样可以避免在内存中创建一个额外的对象