Создание дерева с использованием отношения строк и пар - PullRequest
0 голосов
/ 25 апреля 2018

В настоящее время я работаю над программой, которая берет список строк (имен) и список двойников, которые действуют как расстояния в 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;
}

Заранее спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...