input: from typing import Optional
  
  class Node:
      def __init__(self, data: int):
          self.data = data
          self.left: Optional[Node] = None
          self.right: Optional[Node] = None
  
  def isSubTree(T: Optional[Node], S: Optional[Node]) -> bool:
      """
      Check if the binary tree starting at node S is a subtree of the binary tree starting at node T.
  
      >>> T = Node(26)
      >>> T.left = Node(10)
      >>> T.right = Node(3)
      >>> T.left.left = Node(4)
      >>> T.left.right = Node(6)
      >>> T.left.left.right = Node(30)
      >>> T.right.right = Node(3)
      >>> S = Node(10)
      >>> S.left = Node(4)
      >>> S.right = Node(6)
      >>> S.left.right = Node(30)
      >>> isSubTree(T, S)
      True
      """
      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: Optional[Node], S: Optional[Node]) -> bool:
      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))
output:     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)