input: Write a function to determine if the first binary tree is a subtree of the second binary tree. If it is, return True; otherwise, return False. If both trees are empty, return True.
  
  def isSubTree(T, S):
      
      if S is None: 
          return True
    
      if T is None: 
          return False
    
      if areIdentical(T, S): 
          return True
    
      return isSubTree(T.left, S) or isSubTree(T.right, S) 
    
    
  def areIdentical(T, S): 
        
      if T is None and S is None: 
          return True
    
      if T is None or S is None: 
          return False
    
      return (T.data == S.data and areIdentical(T.left, S.left)and
          areIdentical(T.right, S.right))
  
  # Example usage:
  root1 = Node(1)
  root1.left = Node(2)
  root1.right = Node(3)
  root1.left.left = Node(4)
  root1.left.right = Node(5)
  
  root2 = Node(2)
  root2.left = Node(4)
  root2.right = Node(5)
  
  assert isSubTree(root1, root2) == True
  assert isSubTree(Node(1), Node(2)) == False
  assert isSubTree(None, None) == True
output: def isSubTree(T, S):
      if S is None: 
          return True
    
      if T is None: 
          return False
    
      if areIdentical(T, S): 
          return True
    
      return isSubTree(T.left, S) or isSubTree(T.right, S) 
    
    
  def areIdentical(T, S): 
        
      if T is None and S is None: 
          return True
    
      if T is None or S is None: 
          return False
    
      return (T.data == S.data and areIdentical(T.left, S.left)and
          areIdentical(T.right, S.right))