У меня есть degenerate tree
(выглядит как массив или двусвязный список). Например, вот это дерево:
Каждое ребро имеет некоторый вес. Я хочу найти все равные пути, которые начинаются в каждой вершине.
Пусть ребра имеют следующие веса (это просто пример):
a-b = 3
b-c = 1
c-d = 1
d-e = 1
Затем:
- Вершина
A
не имеет равного пути (нет вершины с левой стороны). - Вершина
B
имеет одну равную пару. ПутьB-A
равен путиB-E
(3 == 3)
. - Вершина
C
имеет одну равную пару. ПутьB-C
равен путиC-D
(1 == 1)
. - Вершина
D
имеет одну равную пару. ПутьC-D
равен путиD-E
(1 == 1)
. - Вершина
E
не имеет равного пути (нет вершины с правой стороны).
Я реализую простой алгоритм, который работает в O(n^2)
. Но это слишком медленно для меня.
C
не имеет таких путей? РазвеC-B
не равноC-D
? - person Petr   schedule 19.05.2015n
до некоторого потомкаn'
? - person Vivin Paliath   schedule 19.05.2015