각 노드가 N 개의 자식을 가질 수 있지만 하나의 부모 만 가질 수있는 트리가 주어집니다. 한 노드의 조상을 얻으려면 어떻게해야합니까? 이러한 결과였다 ["Operator", "FooOperator", "COperator", "C2Operator", "C21Operator"]
로특정 노드에서 트리 선조 목록을 얻으려면 어떻게해야합니까?
# Operator
# ... FooOperator
# ...... BOperator
# ......... B1Operator
# ............ B11Operator
# ...... AOperator
# ......... A2Operator
# ......... A1Operator
# ......... A3Operator
# ...... COperator
# ......... C1Operator
# ......... C2Operator
# ............ C21Operator
tree = {
'children': [{
'children': [{
'children': [{
'children': [{
'children': [],
'class': 'B11Operator',
'parent': 'B1Operator'
}],
'class': 'B1Operator',
'parent': 'BOperator'
}],
'class': 'BOperator',
'parent': 'FooOperator'
},{
'children': [{
'children': [],
'class': 'A2Operator',
'parent': 'AOperator'
},{
'children': [],
'class': 'A1Operator',
'parent': 'AOperator'
},{
'children': [],
'class': 'A3Operator',
'parent': 'AOperator'
}],
'class': 'AOperator',
'parent': 'FooOperator'},{
'children': [{
'children': [],
'class': 'C1Operator',
'parent': 'COperator'
},{
'children': [{
'children': [],
'class': 'C21Operator',
'parent': 'C2Operator'
}],
'class': 'C2Operator',
'parent': 'COperator'
}],
'class': 'COperator',
'parent': 'FooOperator'
}],
'class': 'FooOperator',
'parent': 'Operator'
}],
'class': 'Operator',
'parent': None
}
def display_tree(node, indent=0):
print('.' * indent, node['class'])
indent += 3
for child in node['children']:
display_tree(child, indent)
display_tree(tree)
가 어떻게 "C21Operator"
에서 조상 목록을 얻을 것입니다 : 예를 들어, 내가이 나무를 가지고 가정 해 봅시다? 데이터 구조를 감안할 때
무엇을 시도 했습니까? 정확히 무엇이 문제입니까? – jonrsharpe
이런 종류의 데이터 구조를 사용하면 실제로 가능할 것이라고 생각하지 않습니다. 글쎄, 아마도'tree'에서 시작할 때 가능한 모든 경로를 걸고''C210Operator ''로가는 길을 돌려 주면 될 것입니다. 하지만 어쩌면'parent' 속성을 사용하여 자신의'Node' 클래스를 구현 한 다음 부모 체인을 따라 가면됩니까? –
+1에서 @ juanpa.arrivillaga가이 문제에 더 적합한 더 나은 데이터 구조를 구현하는 맞춤 클래스를 제안했습니다. –