Example #1
0
    def read_tree(self, parent_line, token_line):
        parents = list(map(lambda x: int(x) - 1,parent_line.split()))
        tokens = token_line.strip().split()
        tree_nodes = dict()
        root = None
        for i in range(len(parents)):
            crnt_node_id = i
            if crnt_node_id not in tree_nodes.keys():
                prev_node = None
                while True:
                    if crnt_node_id == -1:
                        break
                    parent_node_id = parents[crnt_node_id]

                    crnt_node = TreeNode()
                    if prev_node is not None:
                        crnt_node.add_child(prev_node)
                    tree_nodes[crnt_node_id] = crnt_node
                    crnt_node.idx = crnt_node_id
                    crnt_node.token = tokens[crnt_node_id]
                    #if trees[parent-1] is not None:
                    if parent_node_id in tree_nodes.keys():
                        tree_nodes[parent_node_id].add_child(crnt_node)
                        break
                    elif parent_node_id == -1:
                        root = crnt_node
                        break
                    else:
                        prev_node = crnt_node
                        crnt_node_id = parent_node_id
        return root