Rumah > Soal Jawab > teks badan
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
Ini hanyalah dua rujukan l dan t yang bergerak:
Andaikan bahawa l pada asalnya menunjuk ke nod a, dan nod kiri dan nod kanan a ialah a1 dan a2 masing-masing. t pada asalnya menunjuk ke nod b, dan nod kiri dan nod kanan b masing-masing ialah b1 dan b2
l.right = t
, l menunjuk ke a, operasi ini bermakna nod kanan a menjadi b, l masih menunjuk ke a, t masih menunjuk ke b
l = t
, l ditukar kepada titik kepada b, t kekal tidak berubah dan mata kepada b
t = t.right
, t pada asalnya menunjuk kepada b, kemudian kini ia menghala ke nod kanan b, iaitu, b2
Selepas pas ini, nod kiri a tidak berubah dan masih a1, nod kanan telah menjadi b, dan a2 telah diputuskan sambungan daripada a. Ia bersamaan dengan memindahkan pokok kecil pelajaran b ke kanan a.
Pada masa yang sama, arah l dan t ditukar, l menunjuk ke b, dan t menunjuk ke b2
ringa_lee2017-04-18 09:53:27
l = t;
dianggap sebagai:
l = l.kanan;
Pergerakan penuding memudahkan satu lelaran.