def words(self):
branch, word, indexes = [self.root], [], [<NUM_LIT:0>]<EOL>letters_with_children = [self._get_children_and_letters(self.root)]<EOL>while len(branch) > <NUM_LIT:0>:<EOL><INDENT>if self.is_final(branch[-<NUM_LIT:1>]):<EOL><INDENT>yield "<STR_LIT>".join(word)<EOL><DEDENT>while indexes[-<NUM_LIT:1>] == len(letters_with_children[-<NUM_LIT:1>]):<EOL><INDENT>indexes.pop()<EOL>letters_with_children.pop()<EOL>branch.pop()<EOL>if len(indexes) == <NUM_LIT:0>:<EOL><INDENT>raise StopIteration()<EOL><DEDENT>word.pop()<EOL><DEDENT>next_letter, next_child = letters_with_children[-<NUM_LIT:1>][indexes[-<NUM_LIT:1>]]<EOL>indexes[-<NUM_LIT:1>] += <NUM_LIT:1><EOL>indexes.append(<NUM_LIT:0>)<EOL>word.append(next_letter)<EOL>branch.append(next_child)<EOL>letters_with_children.append(self._get_children_and_letters(branch[-<NUM_LIT:1>]))<EOL><DEDENT>
Возвращает итератор по словам, содержащимся в боре