Arbre évasé avec un nombre impair de rotations

9

Lors de l'insertion d'un élément dans une arborescence, les rotations sont effectuées par paires sur la base d'un motif en zig-zag ou en zig-zig. Lorsqu'il y a un nombre impair de rotations à effectuer, on peut soit faire la rotation supplémentaire en commençant à la feuille, soit enregistrer la rotation supplémentaire et la faire à la racine. Est-ce que ça importe?

Par exemple, dans l'image ci-jointe, j'insère un 4 dans un BST et le "rejette" à la racine. En haut de la figure, je trouve d'abord la paire en zig-zig au nœud de feuille et j'exécute le zig-zag par le bas en laissant une dernière rotation à droite à la racine. Au bas de la figure, je fais d'abord la rotation étrange à partir de la feuille, puis je fais un zig-zig à la racine.

Qui est correct? Ou les deux mèneront-ils à la performance habituelle de l'arbre splay?

deux façons de s'éloigner pour un nombre impair de rotations

wcochran
la source

Réponses:

4

1+3(r(t)-r(X))tr(u): =Journal(poids de usous-arbre)Φ(T)=X nœud de Tr(t)

La preuve du lemme d'accès examine les coûts d'une seule opération zig / zig-zag / zig-zig etc. Vous obtenez

  1. 1+3(r+(u)-r(u))r+u

  2. 3(r+(u)-r(u))

1+3(r(t)-r(X))

Si vous changez l'ordre des rotations, vous obtiendrez la même somme. La seule différence est que maintenant le '' +1 '' vient de la première rotation et non de la dernière rotation. Vous pouvez même faire la rotation en zig au milieu. Toute autre analyse (classique) repose sur le lemme d'accès.

Cependant, la raison pour laquelle vous effectuez la rotation unique en dernier lieu est que vous ne savez pas si la profondeur du nœud est pair ou impaire à l'avance.

A.Schulz
la source