def _delete_subtree(self, nodes):
nodes = nodes if isinstance(nodes, list) else [nodes]<EOL>iobj = [<EOL>(self._db[node]["<STR_LIT>"], node)<EOL>for node in nodes<EOL>if self._node_name_in_tree(node)<EOL>]<EOL>for parent, node in iobj:<EOL><INDENT>del_list = self._get_subtree(node)<EOL>if parent:<EOL><INDENT>self._db[parent]["<STR_LIT>"].remove(node)<EOL><DEDENT>for child in del_list:<EOL><INDENT>del self._db[child]<EOL><DEDENT>if self._empty_tree():<EOL><INDENT>self._root = None<EOL>self._root_hierarchy_length = None<EOL><DEDENT><DEDENT>
Delete subtree private method.

No argument validation and usage of getter/setter private methods is
used for speed