Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.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_Methods_Parameters_Tree_Binary Search Tree - Fatal编程技术网

Java 构造一种搜索二叉树的方法

Java 构造一种搜索二叉树的方法,java,methods,parameters,tree,binary-search-tree,Java,Methods,Parameters,Tree,Binary Search Tree,我构建了一个二叉搜索树,它将根据人们的姓名对他们进行排序,代码如下: 该类人员的代码: package Tree; public class Person { private int age; private String name; private String gender; public Person( String name, String gender,int age) { this.age = age; this.name = name; this.gen

我构建了一个二叉搜索树,它将根据人们的姓名对他们进行排序,代码如下:

该类人员的代码:

package Tree;

public class Person {
private int age;
private String name;
private String gender;

public Person( String name, String gender,int age) {
    this.age = age;
    this.name = name;
    this.gender = gender;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getGender() {
    return gender;
}

public void setGender(String gender) {
    this.gender = gender;
}

@Override
public String toString() {
    return "Person [age=" + age + ", name=" + name + ", gender="
            + gender + "]";
}
}
搜索树代码为:

package Tree;

public class BinarySearchPerson {

private boolean empty;
private Person person;
private BinarySearchPerson left;
private BinarySearchPerson right;

public BinarySearchPerson(Person person, BinarySearchPerson left,
        BinarySearchPerson right) {
    this.empty = false;
    this.person = person;
    this.left = left;
    this.right = right;
}

public BinarySearchPerson() {
    this.empty = true;
}

public boolean isEmpty() {
    return empty;
}

public Person getPerson() {
    if (isEmpty()) {
        throw new IllegalStateException(
                "Trying to access root of an empty tree");
    }
    return person;
}

public void setPerson(Person person) {
    this.person = person;
}


public BinarySearchPerson getLeft() {
    if (isEmpty()) {
        throw new IllegalStateException(
                                        "Trying to access subtree of an empty tree");
    }
    return left;
}


public void setLeft(BinarySearchPerson left) {
    this.left = left;
}


/**
 * gets the right subtree of this node
 */
public BinarySearchPerson getRight() {
    if (isEmpty()) {
        throw new IllegalStateException(
                                        "Trying to access subtree of an empty tree");
    }
    return right;
}


public void setRight(BinarySearchPerson right) {
    this.right = right;
}



public static BinarySearchPerson insert(Person person, BinarySearchPerson bt){
    int n = person.getName().compareTo(bt.getPerson().getName());


    if (n<0){
        if(bt.getLeft().isEmpty() == true){
             BinarySearchPerson newLeft = new BinarySearchPerson(person,new BinarySearchPerson(),new BinarySearchPerson());
             bt.setLeft(newLeft);
             return bt;
        }
        else{
            insert(person, bt.getLeft());
            return bt;

        }
    }

    if (n>0){
        if(bt.getRight().isEmpty() == true){
             BinarySearchPerson newRight = new BinarySearchPerson(person,new BinarySearchPerson(),new BinarySearchPerson());
             bt.setRight(newRight);
             return bt;
        }
        else{
            insert(person, bt.getRight());
            return bt;
        }
    }
    else return bt;


}


public static int lookupAge(String name) {
    Person person = 
    if (name.compareTo(person.getName())==0){
        return person.getAge();
    }
    else return -1;

}




}
该方法可以很好地对名称进行排序。我现在要做的是创建一个新方法

查找页(字符串名称)

可用于在树中搜索人名的。我有一个粗略的想法如何做到这一点,但我正在努力与语法创建这个方法。该方法必须能够像以下那样调用:

bt.lookupAge("Tom");
这应该是24岁,也就是汤姆的年龄

我需要在树中查找tom,但该方法只有参数名,因此我不知道如何引用树bt。我以前从未以这种方式创建过方法,只是通过包含我需要使用的所有参数。如果是的话,我也可以去

lookupAge(String Name, BinarySearchPerson bt);
但是我不能把树作为参数


任何帮助都会很好,谢谢。

在BinarySearchPerson类中编写您的方法,使其看起来像

public int lookupAge(String name) {...
编写完成后,如果有人像您的示例中那样调用方法,
bt.lookupAge(“Tom”)
,“this”参数将引用
bt
。然后将
this.person.getName()
与name进行比较,然后返回this.person.getAge(),或者返回类似于
this.lookupAge(getRight().getPerson().getName())的内容。

public int lookupAge(String name) {...