input: Write a function to determine if two binary trees are similar based on their structure and values. If both trees are identical in structure and values at each node, return True; otherwise, return False. If either of the trees is empty, return True only if the other tree is also empty.
  assert are_similar(None, None)==True
  assert are_similar(TreeNode(1), None)==False
  assert are_similar(None, TreeNode(1))==False
  assert are_similar(TreeNode(1), TreeNode(1))==True
  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)