code: def values(self):
          
          current_nodes = [self]
          has_more_nodes = True
          values = []
  
          while has_more_nodes:
              has_more_nodes = False
              next_nodes = []
              for node in current_nodes:
                  if node is None:
                      values.append(None)
                      next_nodes.extend((None, None))
                      continue
  
                  if node.left is not None or node.right is not None:
                      has_more_nodes = True
  
                  values.append(node.value)
                  next_nodes.extend((node.left, node.right))
  
              current_nodes = next_nodes
  
          # Get rid of trailing None's
          while values and values[-1] is None:
              values.pop()
  
          return values
docs: Return the `list representation`_ of the binary tree.
  
          .. _list representation:
              https://en.wikipedia.org/wiki/Binary_tree#Arrays
  
          :return: List representation of the binary tree, which is a list of
              node values in breadth-first order starting from the root (current
              node). If a node is at index i, its left child is always at 2i + 1,
              right child at 2i + 2, and parent at index floor((i - 1) / 2). None
              indicates absence of a node at that index. See example below for an
              illustration.
          :rtype: [int | float | None]
  
          **Example**:
  
          .. doctest::
  
              >>> from binarytree import Node
              >>>
              >>> root = Node(1)
              >>> root.left = Node(2)
              >>> root.right = Node(3)
              >>> root.left.right = Node(4)
              >>>
              >>> root.values
              [1, 2, 3, None, 4]