input: 
  def dropLeafNodes(head):
      """Drop all leaf nodes from the given Huffman tree.
  
      >>> dropLeafNodes(None)
      None
      >>> dropLeafNodes((1, ((2, ((4, None, None), (5, None, None))), (3, ((6, None, None), (7, None, None))))))
      (1, ((2, None, None), (3, None, None)))
      """
      
      # If node is not None and doesn't have any children 
      if head and not head.left and not head.right: 
          return None
    
      # Don't change anything if head is None 
      if not head: 
          return None
    
      # Recursively call dropLeafNodes on left and right subtrees
      head.left = dropLeafNodes(head.left) 
      head.right = dropLeafNodes(head.right) 
    
      # Return head of the modified tree
      return head
  
output:     if head is None:
          return None
      
      if isinstance(head, tuple):
          value, left, right = head
          left = dropLeafNodes(left)
          right = dropLeafNodes(right)
          if left is None and right is None:
              return None
          return (value, left, right)
      
      return head