java如何计算数据结构中的相同名称?
我需要在二叉搜索树和单链表中计算相同学生的名字。但我找不到该怎么做。有人有答案吗
public class Student {
private int ID;
private String name;
private String surname;
public Student(int id, String n, String s)
{
ID = id;
name = n;
surname = s;
}
public int getID()
{
return ID;
}
public String getName()
{
return name;
}
public String getSurname()
{
return surname;
}
public void setID(int newID)
{
ID = newID;
}
public void setName(String newName)
{
name = newName;
}
public void setSurname(String newSurname)
{
surname = newSurname;
}
public String ToString()
{
return "\nname : "+name+"\nsurname : "+surname+"\nid : "+ID+"\n";
}
}
学生班以上
public class NodeBST
{
private Student s;
private NodeBST left;
private NodeBST right;
private int index ;
public NodeBST(Student newS)
{
s = newS;
left = null;
right = null;
index = 0 ;
}
public int getIndex(){
return index ;
}
public Student getStudent()
{
return s;
}
public NodeBST getLeft()
{
return left;
}
public NodeBST getRight()
{
return right;
}
public void setIndex(int idx){
index = idx ;
}
public void setStudent(Student newS)
{
s = newS;
}
public void setLeft(NodeBST newLeft)
{
left = newLeft;
}
public void setRight(NodeBST newRight)
{
right = newRight;
}
public boolean hasLeft()
{
return (left != null);
}
public boolean hasRight()
{
return (right != null);
}
}
上面的二叉搜索树的节点类
import java.util.*;
public class BST
{
private NodeBST root;
int size ;
String[] names ;
public BST()
{
names = new String[50];
root = null;
size = 0 ;
}
public BST(NodeBST newNodeBST)
{
root = newNodeBST;
}
public boolean isEmpty()
{
return (root == null);
}
public void insert(NodeBST newNodeBST)
{
if(isEmpty())
{ // root is null
root = newNodeBST;
root.setIndex(size);
names[size] = root.getStudent().getName() ;
size++;
}
else
{
NodeBST tempNodeBST = root;
while(true)
{
if(newNodeBST.getStudent().getID() < tempNodeBST.getStudent().getID())
{
if(tempNodeBST.getLeft() == null)
{
tempNodeBST.setLeft(newNodeBST);
tempNodeBST.getLeft().setIndex(size);
size++;
break;
}
else
tempNodeBST = tempNodeBST.getLeft();
}
else
{
if(tempNodeBST.getRight() == null)
{
tempNodeBST.setRight(newNodeBST);
tempNodeBST.getRight().setIndex(size);
size++;
break;
}
else
tempNodeBST = tempNodeBST.getRight();
}
}
}
有一种方法可以在二进制搜索3中插入student。那么我如何在这个二叉搜索树中计算相同的名字呢。下面是我如何尝试这样做,但没有成功
public void nameCounter(){
String [] tempNames = names ;
for(int element = 0 ; element < size ; element++){
int contains = 1 ;
for(int counter = element ; counter < size ; counter++){
if(tempNames[element].equals(tempNames[counter]) && element != counter) {
contains++;
}
}
System.out.println(tempNames[element] +" : "+contains);
}
}
我该怎么解决
共 (0) 个答案