我有以下的Node對象獲取一棵樹的路徑,但與所有留下OA節點在一個路徑在python
class Node(object):
def __init__(parent=None, data)
self.__parent = parent
self.__data = data
self.__children = []
# parent and data properties getters and setters are left out for convinience
def add_node(self, node):
node.parent = self
self.__children.append(node)
所以我有一棵樹,看起來像這樣
dummy_root(nodata)
/ | \
A B C
/ \ / \ / \
D E F G H I
/\ /\/\/\/\/\
K L M N O P Q R S T U V
我想爲dummy_root的所有子節點獲取所有路徑。還沒有能還找出棘手的部分是葉節點必須屬於一個路徑,例如
paths = [
[A, D, K, L],
[A, E, M, N],
[B, F, O, P],
[B, G, Q, R],
[C, H, S, T],
[C, I, U, V]
]
我已經找到一種方法來獲取所有路徑,但我得到的是每一個不同的路徑葉如
[A, D, K] and [A, D, L]
Python代碼:
def __find_paths_recursive(node, path):
path = deepcopy(path)
path.append(node.data)
if not node.children:
pathss.append(path)
for child in node.children:
self.__find_paths_recursive(child, path)
for child in dummy_root.children:
path = []
find_paths_recursive(child, path)
@depperm糾正樹。 – Apostolos
那麼你得到所有不同路徑列表的列表? – themistoklik
是的,但葉節點必須在相同的路徑。 – Apostolos