input: 
  def isSubTree(T, S):
      """ Check if a binary tree S is a subtree of binary tree T.
      >>> isSubTree(Node(1), Node(2))
      False
      >>> isSubTree(Node(1), None)
      True
      >>> isSubTree(Node(1, Node(2), Node(3)), Node(1))
      False
      """
      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))
  
  class Node:
      """A binary tree node."""
      def __init__(self, data, left=None, right=None):
          self.data = data
          self.left = left
          self.right = 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)
  
  
  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))
  
  class Node:
      """A binary tree node."""
      def __init__(self, data, left=None, right=None):
          self.data = data
          self.left = left
          self.right = right
  