Вероятно не совсем алгоритм YFull, но думаю так:
Для примера рассчитаем возраст узла "A":
1) Для начала рассчитаем веса дочерних нод и листьев:
нода 1: 2*(2+1+1+1+1+1) = 14
нода 2: 2*(2+1+1+1+1+1) = 14
лист 3: 1*(2+2+1+1+1+1) = 8
лист 4: 1*(2+2+1+1+1+1) = 8
лист 5: 1*(2+2+1+1+1+1) = 8
лист 6: 1*(2+2+1+1+1+1) = 8
лист 7: 1*(2+2+1+1+1+1) = 8
2) рассчитаем возраст узла с учетом возраста дочерних нод/листьев и полученных весов "A":
(309.68*14 + 61.94*14 + возраст3*8 + возраст4*8 + возраст5*8 + возраст6*8 + возраст7*8 )/(14 + 14 + 8 + 8 + 8 + 8 + 8 )
3) Если полученный таким методом возраст для "A" выше чем полученный просто расчетом ро, то корректируем его вверх с учетом возраста "1" или даже с учетом родителя для "A" (если расширить алгоритм).
Аналогично считаем взвешенные возраста для всех узлов. Расчет лучше делать от листьев к корню, а последующую корректировку от корня к листьям.
PS. В данных расчетах понятно что под возрастом листьев и узлов подразумеваются возраста ребер.
PPS. Расшифровка формулы расчета веса ноды
нода 1: 2(2 семпла в ноде 1)*(2(2 семпла в ноде 2)+1(1 семпл в листе 3)+1(1 семпл в листе 4)+1(1 семпл в листе 5)+1(1 семпл в листе 6)+1(1 семпл в листе 7)) = 14