0
Учитывая дерево:Подсчитайте нет дочерних узлов для каждого узла
F / \ C E /\ / A B D
Я не хочу, чтобы насчитать не из дочерних узлов для каждого узла. Какой будет оптимизированный алгоритм?
Учитывая дерево:Подсчитайте нет дочерних узлов для каждого узла
F / \ C E /\ / A B D
Я не хочу, чтобы насчитать не из дочерних узлов для каждого узла. Какой будет оптимизированный алгоритм?
Если счетчик ребенок должен включать в себя внуков, сделать postorder обход, рекурсивно подсчета размеров ветвления в O (N):
int countChildren(Node node) {
int leftCount = node.left == null ? 0 : (countChildren(root.left) + 1);
int rightCount = node.right == null ? 0 : (countChildren(root.right) + 1);
int totalChildren = leftCount + rightCount;
System.out.println(node.name + ":" + totalChildren);
return totalChildren;
}
Это даст общее количество подсчета корневого узла. Не так ли? –
Это даст общее количество детей, включая внуков любого узла. Для F он вернется 5. Для C он вернется 2. Для E он вернется 1. Для A, B и D он вернет 0. Разве это не то, что вы хотели? Если да, пожалуйста, уточните. –
Мне посчастливилось найти прямой отчет для менеджера. Любой в верхней иерархии - менеджер. Нам нужно печатать, сколько сотрудников управляет каждый менеджер. Ответ должен быть напечатан как: –