code: def walk(self, address):
          '''
          Returns a stream of pairs of node addresses and data, raising
          AddressNotInTree if ADDRESS is not in the tree.
  
          First the ancestors of ADDRESS (including itself) are yielded,
          earliest to latest, and then the descendants of ADDRESS are
          yielded in an unspecified order.
  
          Arguments:
              address (str): the address to be walked
          '''
  
          for step in self._walk_to_address(address):
              node = step
              yield node.address, node.data
  
          to_process = deque()
  
          to_process.extendleft(
              node.children)
  
          while to_process:
              node = to_process.pop()
  
              yield node.address, node.data
  
              if node.children:
                  to_process.extendleft(
                      node.childrenf walk(self, address):
          '''
          Returns a stream of pairs of node addresses and data, raising
          AddressNotInTree if ADDRESS is not in the tree.
  
          First the ancestors of ADDRESS (including itself) are yielded,
          earliest to latest, and then the descendants of ADDRESS are
          yielded in an unspecified order.
  
          Arguments:
              address (str): the address to be walked
          '''
  
          for step in self._walk_to_address(address):
              node = step
              yield node.address, node.data
  
          to_process = deque()
  
          to_process.extendleft(
              node.children)
  
          while to_process:
              node = to_process.pop()
  
              yield node.address, node.data
  
              if node.children:
                  to_process.extendleft(
                      node.children)
docs: Returns a stream of pairs of node addresses and data, raising
          AddressNotInTree if ADDRESS is not in the tree.
  
          First the ancestors of ADDRESS (including itself) are yielded,
          earliest to latest, and then the descendants of ADDRESS are
          yielded in an unspecified order.
  
          Arguments:
              address (str): the address to be walked