input: Write a function to determine if two binary trees are similar by comparing their structures and values. Return True if they are similar, otherwise return False.
  
  class TreeNode:
      def __init__(self, x):
          self.val = x
          self.left = None
          self.right = None
  
  def are_similar(root1, root2):
      if root1 is None and root2 is None:
          return True
      if (root1 and root2) is None or (root1 or root2) is None:
          return False
      if root1.val != root2.val:
          return False
      else:
          return are_similar(root1.left, root2.left) and are_similar(root1.right, root2.right)
  
  assert are_similar(None, None)==True
  assert are_similar(TreeNode(1), TreeNode(1))==True
  assert are_similar(TreeNode(1), TreeNode(2))==False
  assert are_similar(TreeNode(1, TreeNode(2), TreeNode(3)), TreeNode(1, TreeNode(2), TreeNode(3)))==True
  assert are_similar(TreeNode(1, TreeNode(2), TreeNode(3)), TreeNode(1, TreeNode(3), TreeNode(2)))==False
output: def are_similar(root1, root2):
      if root1 is None and root2 is None:
          return True
      if root1 is None or root2 is None:
          return False
      if root1.val != root2.val:
          return False
      return are_similar(root1.left, root2.left) and are_similar(root1.right, root2.right)