code: def postorder(self):
          
          node_stack = []
          result = []
          node = self
  
          while True:
              while node is not None:
                  if node.right is not None:
                      node_stack.append(node.right)
                  node_stack.append(node)
                  node = node.left
  
              node = node_stack.pop()
              if (node.right is not None and
                      len(node_stack) > 0 and
                      node_stack[-1] is node.right):
                  node_stack.pop()
                  node_stack.append(node)
                  node = node.right
              else:
                  result.append(node)
                  node = None
  
              if len(node_stack) == 0:
                  break
  
          return result
docs: Return the nodes in the binary tree using post-order_ traversal.
  
          A post-order_ traversal visits left subtree, right subtree, then root.
  
          .. _post-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.postorder
              [Node(4), Node(5), Node(2), Node(3), Node(1)]