input: Write a function to check if a given binary tree is a subtree of another binary tree. If it is a subtree, return True; otherwise, return False. If both trees are empty, return True.
  
  ### Example:
  
  
  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)
  
  # Test cases
  assert isSubTree(None, None) == True
  assert isSubTree(Node(1), None) == False
  assert isSubTree(None, Node(1)) == False
  assert isSubTree(Node(1), Node(1)) == True
  root1 = Node(26)
  root1.right = Node(3)
  root1.right.right = Node(3)
  root1.left = Node(10)
  root1.left.left = Node(4)
  root1.left.left.right = Node(30)
  root1.left.right = Node(6)
  
  root2 = Node(10)
  root2.right = Node(6)
  root2.left = Node(4)
  root2.left.right = Node(30)
  
  assert isSubTree(root1, root2) == True
  
  root3 = Node(3)
  root3.right = Node(2)
  
  assert isSubTree(root1, root3) == False
  
  
  Expected output:
  
  True
  False
  False
  True
  True
  False
  
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)