code: def preorder(self):
          
          node_stack = [self]
          result = []
  
          while len(node_stack) > 0:
              node = node_stack.pop()
              result.append(node)
  
              if node.right is not None:
                  node_stack.append(node.right)
              if node.left is not None:
                  node_stack.append(node.left)
  
          return result
docs: Return the nodes in the binary tree using pre-order_ traversal.
  
          A pre-order_ traversal visits root, left subtree, then right subtree.
  
          .. _pre-order: https://en.wikipedia.org/wiki/Tree_traversal
  
          :return: List of nodes.
          :rtype: [binarytree.Node]
  
          **Example**:
  
          .. doctest::
  
              >>> from binarytree import Node
              >>>
              >>> root = Node(1)
              >>> root.left = Node(2)
              >>> root.right = Node(3)
              >>> root.left.left = Node(4)
              >>> root.left.right = Node(5)
              >>>
              >>> print(root)
              <BLANKLINE>
                  __1
                 /   \\
                2     3
               / \\
              4   5
              <BLANKLINE>
              >>> root.preorder
              [Node(1), Node(2), Node(4), Node(5), Node(3)]