Является ли количество дочерних узлов равным для всех узлов или 0 - PullRequest
1 голос
/ 30 марта 2019

Я пытаюсь создать код, который бы указывал, равно ли число дочерних узлов для всех родительских узлов. Другими словами, если все родители имеют одинаковое количество детей. Если какой-то узел не является родителем, он не считается ложным. Тем не менее, мой код не работает. Он не возвращает false, если последний уровень не соответствует ожидаемому числу.

Я уже определил, что все дочерние узлы должны иметь такое же количество дочерних узлов, что и корневой узел.

public boolean equalNumberOfChildren() {
    boolean correct = true;
    for (Person child : children) {
        correct = child.equalNumberOfChildren();
        if (correct == true && child.children.size() == children.size() || child.children.size()==0) {
            correct = true;
        }else {
            correct = false;
        }
    }
    return correct;
}

1 Ответ

0 голосов
/ 30 марта 2019

Вы переопределяете результат рекурсивного вызова. вам нужно запрашивать детей только в том случае, если рекурсивный вызов был признан "правильным"

    correct = child.equalNumberOfChildren();  // assign value to correct
    // continue only if not found discrepency 
    if (correct && (child.children.size() == children.size() || child.children.size()==0)) {
        correct = true;
    }else {
        correct = false;
    }
}
return correct;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...