2016-04-23 36 views
0

我有二进制搜索树包含学生记录,包括ID和学生的姓名,年龄和电子邮件和电话号码。查找二进制搜索结果中的树

所有的学生都会根据他们的学生证号码存储在二进制搜索树中,并且可以保证学生的这种排序(通过ID)与姓氏按字母排序完全一样,然后名字。

我使用学生ID来查找节点的方法。

这就是我想要做的方法来找到学生的姓氏和名字节点的编码

private Unfstudent findNode(Unfstudent student, int id) { 

    if (student == null) 
     return null; 
    } 


    if (id < student.getID()) { 
     return findNode(student.getLeft(), id); 
    } 

    else if (id > student.getID()) { 
     return findNode(student.getRight(), id); 
    } 

    else { 
     return student; 
     } 

    } 

任何人都可以帮助我吗?

+0

嗯......这是几乎相同的过程......如果当前节点为null,则学生可以不会被发现....如果当前节点出现在姓氏之后,则按字母顺序排列firstname,然后在左侧树中搜索。如果它在之前,然后搜索在正确的树。否则返回当前节点。在java中使用比较器的确定排序的过程非常简单,字符串 – Madhusudhan

回答

0

它是一样的,只是使用字典上的字符串比较来比较字符串。

所以,你只会做这个

//some code 
if (name.compareTo(student.name) == -1) { 
    return findNode(student.getLeft(), name); 
} 
//some code 

欲了解更多信息检查String Comparison in Java

+0

@ cricket_007你是正确的,它现在是固定的 – Aleksandar

+0

我通常使用'<0',但我想这会工作 –