Maison > Questions et réponses > le corps du texte
java实现伸展树
中的splay(Comparable key)
方法,第198行:
l.right = t; /* link left */
l = t;
t = t.right;
不能理解l=t;
前面的l.right = t
不就是被覆盖掉了吗?
ringa_lee2017-04-18 09:53:27
Voici juste les deux références l et t en mouvement :
Supposons que l pointe à l'origine vers le nœud a, et que le nœud gauche et le nœud droit de a sont respectivement a1 et a2. t pointe à l'origine vers le nœud b, et le nœud gauche et le nœud droit de b sont respectivement b1 et b2
l.right = t
, l pointe vers a, cette opération signifie que le nœud droit de a devient b, l pointe toujours vers a, t pointe toujours vers b
l = t
, l est modifié pour pointer vers b, t reste inchangé et pointe vers b
t = t.right
, t pointait à l'origine vers b, puis maintenant il pointe vers le nœud droit de b, c'est-à-dire b2
Après cette passe, le nœud gauche de a n'a pas changé et est toujours a1, le nœud droit est devenu b, et a2 a été déconnecté de a. Cela équivaut à déplacer le sous-arbre de la leçon b à droite de a.
En même temps, les directions de l et t sont modifiées, l pointe vers b et t pointe vers b2
ringa_lee2017-04-18 09:53:27
l = t;
est considéré comme :
l = l.right;
Le mouvement du pointeur facilite une itération.