В настоящее время я работаю над программой, которая берет список строк (имен) и список двойников, которые действуют как расстояния в java.Мне дали класс отношений:
public class Relationships {
private List<String> residents;
private Map<String, Map<String, Double>> distances;
public Relationships(List<String> residents, double[][] distances) {
this.residents = Collections.unmodifiableList(residents);
this.distances = new HashMap<>();
for(int x = 0; x < this.residents.size(); x += 1) {
Map<String, Double> toMap = new HashMap<>();
for(int y = 0; y < this.residents.size(); y += 1) {
toMap.put(this.residents.get(y), distances[x][y]);
}
this.distances.put(this.residents.get(x), toMap);
}
}
public List<String> residents() {
return residents;
}
public double distance(String rs, String re) {
return distances.get(rs).get(re);
}
}
Цель этой программы - создать дерево на основе имен и соответствующих им расстояний.Первое имя будет корнем, и оно будет искать следующего человека, который находится ближе всего к ним, и сделает его своим ребенком.На следующем шаге процесса первый человек снова будет искать имя, которое находится рядом с ним, но вновь созданный ребенок также будет искать имя, которое близко к ним.Если расстояния между корнем и новым потомком равны последнему поиску, то узел, который наследует это имя в качестве своего потомка, - это тот, чье имя идет первым в алфавитном порядке, например, если Джон и Боб находятся на одинаковом расстоянии от Джеймса,Боб получит Джеймса своим следующим ребенком на дереве.Пример настройки списков приведен ниже.
public static void main(String[] args) {
List<String> residents = Arrays.asList(
"James", "Bob", "Aaron", "King"
);
double[][] distances = {
{0.0, 4.5, 0.5, 5.0},
{2.5, 0.0, 2.5, 3.5},
{0.5, 3.5, 0.0, 3.0},
{1.0, 2.5, 1.0, 0.0}
};
Relationships rel = new Relationships(residents, distances);
Поскольку это дерево не будет двоичным, я не могу использовать левого и правого дочерних элементов.Как мне создать дерево, используя эти входы.Назначение этого дерева для распечатки обходов и входных данных во время тестирования будет неизвестно.Это метод, который я создал для размещения кода создания дерева.
public static RelationTree createModel(Relationships relmodel, String resident0) {
// create and return a RelationTree
return null;
}
Заранее спасибо за помощь!