input: Write a function to check if a given binary tree (S) is a subtree of another binary tree (T). If S is a subtree of T, return True; otherwise, return False. If S is 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))
  
  assert isSubTree(Node(1), Node(1))==True
  assert isSubTree(Node(1), Node(2))==False
  assert isSubTree(Node(1, left=Node(2), right=Node(3)), Node(2))==True
  assert isSubTree(None, Node(1))==False
  assert isSubTree(Node(1), 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))