class_docstr: The hierarchical tree representing the entirety of a parse.
docstr: Prints a pretty-printed (indented) representation
  of the dependency tree. If all_features is True, then
  each node is printed with its complete feature bundles.
docstr_tok: ["Prints","a","pretty-printed","(","indented",")","representation","of","the","dependency","tree",".","If","all_features","is","True",",","then","each","node","is","printed","with","its","complete","feature","bundles","."]
code: def print_tree(self, all_features: bool = False):
      """Prints a pretty-printed (indented) representation
      of the dependency tree. If all_features is True, then
      each node is printed with its complete feature bundles.
      """
  
      def _print_treelet(node: Form, indent: int, all_features: bool):
          edge = "└─ " if indent > 0 else ""
          node_str = node.full_str(False) if all_features else str(node)
          print(
              " " * indent + edge + node("relation") + " | " + node_str
          )
  
          for child_node in list(node):
              _print_treelet(child_node, indent + 4, all_features)
  
      _print_treelet(
          self.getroot(), indent=0, all_features=all_features
      )
  
imports: from typing import Dict, List, Union
  from xml.etree.ElementTree import Element, ElementTree
  from cltk.core.data_types import Doc, Process, Word
  from cltk.core.exceptions import CLTKException
  from cltk.morphology.universal_dependencies_features import NOMINAL_FEATURES, OTHER_FEATURES, VERBAL_FEATURES, MorphosyntacticFeature
label_desc: Use image node_id 3 for calling the DependencyTree obj's underlying member method code with example usage: obj.print_tree(all_features) without return types