Quel est l'algorithme de base pour tester si un arbre est symétrique. Comme il s'agit d'un arbre binaire, je suppose qu'il s'agit d'une définition récursive de ce type.
La question formelle est ci-dessous :
Un arbre binaire est une image miroir de lui-même si ses sous-arbres gauche et droit sont des images miroir identiques, c'est-à-dire que l'arbre binaire est symétrique. Quelques exemples permettent d'expliquer ce principe.
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 votre choix, définissez une classe/C struct BTree et une méthode associée pour vérifier si l'arbre est une image miroir. Pour les langages typés statiquement, vous pouvez supposer que les valeurs des nœuds sont toutes des entiers.
Class/structure definition
BTree {
BTree left;
BTree right;
int value;
}
Supposons que la racine de l'arbre soit suivie par l'appelant et que la fonction isMirror() soit invoquée sur elle.
De même, si vous définissez une classe, veillez à fournir un constructeur sans argument et des méthodes getter/setter si les éléments de données ne sont pas accessibles au public.