У меня есть неупорядоченное дерево.
Каждый узел представляет задачу, которая может быть выполнена (1), не выполнена (0) или иметь дочерние задачи.
Например:
1
-1.1
-1.2
--1.2.1
--1.2.2
-1.3
2
3
-3.1
4
-4.1
--4.1.1
5
Предположим, что листья 1.2.1, 3.1 и 5 сделаны сделано
1
-1.1
-1.2
--1.2.1*
--1.2.2
-1.3
2
3
-3.1*
4
-4.1
--4.1.1
5*
Я хочу рассчитать процент полноты каждого узла. Листья легко рассчитываются с 0% или 100%, но как вычислить все остальные?
В данный момент я хожу по дереву с листьев и каждый узел рассчитывается на основе процента полноты дочерних элементов. Например:
1 50%
-1.1* 100%
-1.2 0%
2 0%
3 33%
-3.1* 100%
-3.2 0%
-3.3 0%
Теперь к 1.2 добавлено больше потомков (это уже не лист, а узел). Если дети «не закончили», 1,2 всегда равно 0%, и поэтому 1 равно 50%, но я бы хотел, чтобы 1 было меньше , а затем 50%, то есть, если спускаться к своим детям и внукам, количество задач, которые нужно выполнить, чтобы это было выполнено, на 100% больше!
1 50%
-1.1* 100%
-1.2 0%
--1.2.1 0%
--1.2.2 0%
2 0%
3 33%
-3.1* 100%
-3.2 0%
-3.3 0%
Каков наилучший способ рассчитать это? Спасибо