code: def bfs(self, root = None, display = None):
          '''
          API: bfs(self, root = None, display = None)
          Description:
              Searches tree starting from node named root using breadth-first
              strategy if root argument is provided. Starts search from root node
              of the tree otherwise.
          Pre:
              Node indicated by root argument should exist.
          Input:
              root: Starting node name.
              display: Display argument.
          '''
          if root == None:
              root = self.root
          if display == None:
              display = self.attr['display']
          self.traverse(root, display, Queue()f bfs(self, root = None, display = None):
          '''
          API: bfs(self, root = None, display = None)
          Description:
              Searches tree starting from node named root using breadth-first
              strategy if root argument is provided. Starts search from root node
              of the tree otherwise.
          Pre:
              Node indicated by root argument should exist.
          Input:
              root: Starting node name.
              display: Display argument.
          '''
          if root == None:
              root = self.root
          if display == None:
              display = self.attr['display']
          self.traverse(root, display, Queue())
docs: API: bfs(self, root = None, display = None)
          Description:
              Searches tree starting from node named root using breadth-first
              strategy if root argument is provided. Starts search from root node
              of the tree otherwise.
          Pre:
              Node indicated by root argument should exist.
          Input:
              root: Starting node name.
              display: Display argument.