On dit que deux arbres de recherche binaires sont linéairement équivalents lorsqu'ils s'accordent dans leurs traversées dans l'ordre. Le théorème suivant explique pourquoi les rotations d'arbres sont si fondamentales:
Soit A et B des arbres de recherche binaires. Alors A et B sont linéairement équivalents si et seulement s'ils sont reliés par une séquence de rotations d'arbres.
J'ai remarqué ce résultat lorsque j'ai découvert pour la première fois les structures de données il y a longtemps et je voulais comprendre plus profondément le statut spécial des rotations d'arbres.
La preuve est simple et intuitive: faites pivoter le moindre élément jusqu'à la position racine le long de la colonne vertébrale gauche. Par l'ordre invariant, cet arbre réarrangé ne peut pas avoir de sous-arbre gauche. Maintenant récursif sur le sous-arbre droit. Le résultat est une forme normale pour tester l'équivalence linéaire.
Bien qu'il s'agisse d'un théorème de base, je ne l'ai jamais rencontré dans la littérature. J'apprécierais grandement une référence pour la prochaine fois que j'aurai besoin d'utiliser ce résultat.
(Bonus cerveau teaser: Quel est le meilleur algorithme pour trouver la séquence la plus courte de rotations d'arbres qui connectent deux arbres de recherche binaire linéairement équivalents?)