input: Write a function to implement a function in Python that takes a Huffman tree and drop all its leaf nodes. The function should return the modified tree without the leaf nodes. If the input node is a leaf, the function should return None. Otherwise, it should recursively process the left and right subtrees.
  def dropLeafNodes(head): 
      
      # 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
  
  assert dropLeafNodes((1, ((2, (None, None)), (3, (None, None))))) == (1, (None, None))
  assert dropLeafNodes((1, ((2, ((4, (None, None)), (5, (None, None)))), (3, ((6, (None, None)), (7, (None, None))))))) == (1, ((2, (None, None)), (3, (None, None))))
  assert dropLeafNodes(None) == None
  assert dropLeafNodes((1, ((2, (None, None)), None))) == (1, (None, None))
  assert dropLeafNodes((1, (None, None))) == None
output: 
  def dropLeafNodes(head): 
      
      # 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
  