input: Write a function to determine if a given binary tree is a subtree of another binary tree. Implement the function that includes the Node class for tree structure. Return True if the first tree is a subtree of the second tree, otherwise return False. If either tree is empty, return False based on the rules specified.
  
  class Node: 
      def __init__(self, data): 
          self.data = data 
          self.left = None
          self.right = None
    
  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(None, Node(1)) == False
  assert isSubTree(Node(2), None) == True
  assert isSubTree(Node(2), Node(2)) == True
  assert isSubTree(Node(2), Node(3)) == False
  assert isSubTree(Node(2, None, Node(3)), Node(2, None, Node(3))) == 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))