У меня есть список узлов, которые являются частью дерева.Я хочу отфильтровать список только для самых низких детей.Для дерева примеров:
(1)
|
+-- (2)
|
+-- (3)
|
+-- (4)
|
+-- (5)
|
+--(6)
Если мой список [1,2,5,6]
, я бы хотел, чтобы результаты были [2,6]
, потому что они являются самыми низкими потомками.
У меня есть метод узла is_descendant()
, который принимает два узла и возвращает True
или False
.
Например:
1.is_descendant(2) ---> False
2.is_descendant(1) ---> True
6.is_descendant(1) ---> True
Моя первая идеяначинать с первого элемента в списке и применять метод is_descendant()
ко всем другим элементам.Всякий раз, когда он возвращает True
, я удаляю другой элемент из списка - поскольку это родительский узел.
Есть ли более эффективный способ сделать это?Или этот метод будет работать 100% времени (доказательство возможно?)