Garder un arbre binaire équilibré lorsque les éléments sont insérés dans l'ordre

Je me demandais si il existe un algorithme pour le maintien de l'équilibre d'un arbre binaire, lorsqu'il est connu que les éléments sont toujours insérées dans l'ordre.

Une option serait d'utiliser la méthode standard de la création d'un équilibre de l'arbre à partir d'un tableau trié ou liste liée, comme discuté dans cette question, et aussi cette autre question. Cependant, je voudrais une méthode où quelques éléments peuvent être insérés dans l'arbre, ensuite effectué des recherches sur elle, et d'autres éléments, puis ajouté plus tard, sans avoir à décomposer l'arbre à une liste et re-faire la chose entière.

Une autre option serait d'utiliser l'un des nombreux auto-équilibrage de l'arbre implémentations, AVL, AA, Rouge-Noir, etc. etc. Cependant, tous ces imposer une sorte de surcharge dans le processus d'insertion, et je me demandais si il y a peut être un moyen d'éviter cela, étant donné la contrainte que les éléments sont toujours inséré dans l'ordre croissant.

Donc, pour plus de clarté, je voudrais savoir si il existe une méthode qui me permette de maintenir un équilibre arbre binaire, de sorte que je peux insérer l'arbitraire d'un nouvel élément à n'importe quel point et de maintenir l'équilibre de l'arbre, à condition que le nouvel élément est plus dans la commande de l'arbre de tous éléments déjà présents dans l'arbre.

Comme un exemple, supposons que j'ai eu l'arbre suivant:

       4
      /\
     /  \
    2     6
   /\   /\
  1   3 5   7

Est-il un moyen simple de maintenir l'équilibre lors de l'insertion d'un nouvel élément, si je sais que l'élément sera plus grande que 7?

source d'informationauteur