Untitled
unknown
plain_text
2 years ago
781 B
6
Indexable
class T:
def __init__(self, value, child=None):
self.value = value
self.child = []
def depth_order(root):
if root is None:
return []
ans = []
for i in sorted(root.child, key=lambda x: x.value, reverse=True):
ans += depth_order(i)
return [root.value] + ans
def from_list(parents):
nodes = {}
root = None
for i in range(1, len(parents)+1):
nodes[i] = T(i)
for i in range(1, len(parents)+1):
if parents[i-1] != -1:
nodes[parents[i - 1]].child.append(nodes[i])
else:
root = nodes[i]
return list(nodes.values()), root
n = int(input())
parents = list(map(int, input().split()))
ans = from_list(parents)
print(*depth_order(ans[1]))Editor is loading...
Leave a Comment