Vérifier si un arbre binaire est une image miroir ou symétrique

Qu'est-ce que les bases de l'algorithme pour tester si un arbre est symétrique. Parce que c'est un arbre binaire, je suppose que ce serait une définition récursive de toutes sortes

Formelle question est ci-dessous:

Un arbre binaire est une image miroir de lui-même si son les sous-arbres gauche et droit sont identiques images en miroir c'est à dire, l'arbre binaire symétrique.
Cela est mieux expliqué par quelques exemples.

  1
 /\
2   2

VRAI

   1
  /\
 2   2
  \
   3

FAUX

     1
   /  \
  2     2
 /\   /\
4   3 3   4

VRAI

       1
     /  \
    2     2 
   /\   /\
  3   4 3   4

FAUX

       1
     /  \
    2     2
   /      \
  3         3

VRAI

Dans un langage de programmation de choix, de définir un Arbre class/struct C et une méthode associée à vérifier si l'arbre est une image de miroir. Pour les langages à typage statique, vous pouvez supposer que les valeurs de nœud sont tous les nombres entiers.

Class/structure definition
BTree {
  BTree left;
  BTree right;
  int value;
}

Supposer que la racine de l'arbre est suivi par l'appelant et fonction isMirror() est appelée.

Aussi, si la définition d'une classe, assurez-vous de fournir un constructeur sans argument et les getter/setter si les éléments de données ne sont pas accessibles au public.