def read_tree(line): parents = map(int, line.split()) trees = dict() root = None for i in xrange(1, len(parents) + 1): # if not trees[i-1] and parents[i-1]!=-1: if i - 1 not in trees.keys() and parents[i - 1] != -1: idx = i prev = None while True: parent = parents[idx - 1] if parent == -1: break tree = Tree() if prev is not None: tree.add_child(prev) trees[idx - 1] = tree tree.idx = idx - 1 # if trees[parent-1] is not None: if parent - 1 in trees.keys(): trees[parent - 1].add_child(tree) break elif parent == 0: root = tree break else: prev = tree idx = parent return root