Вопрос заключается в том, чтобы узнать сумму расстояний между каждыми двумя узлами BinarySearchTree, учитывая, что каждая пара родитель-ребенок разделяется единичным расстоянием. Он должен быть рассчитан после каждой вставки.
Пример:
 ->first node is inserted..
      (root)
   total sum=0;
->left and right node are inserted
      (root)
      /    \
  (left)   (right)
   total sum = distance(root,left)+distance(root,right)+distance(left,right);
             =        1           +         1          +         2
             =     4
and so on.....
Решения, с которыми я столкнулся:
-  перебор. Шаги: -  выполнить DFS и отслеживать все узлы: O(n).
-  Выберите каждый из двух узлов и вычислите: O(nC2)_times_O(log(n))=O(n2log(n))расстояние между ними, используя Самый низкий общий предок и добавьте их.
 Общая сложность: -O(n2log(n)).
-  выполнить DFS и отслеживать все узлы: 
-  O(nlog(n)). Шаги: --  Перед вставкой выполните DFS и отслеживайте все узлы: O(n).
-  Рассчитайте расстояние между вставленными node и: O(nlog(n)). остальные узлы.
- Добавьте существующую сумму с суммой, вычисленной на шаге 2
 Общая сложность: -O(nlog(n)).
-  Перед вставкой выполните DFS и отслеживайте все узлы: 
Теперь возникает вопрос: существует ли какое-либо решение порядка O(n)??
