Rumah  >  Soal Jawab  >  teks badan

java - 伸展树的展开的理解

java实现伸展树

中的splay(Comparable key)方法,第198行:

l.right = t;           /* link left */
l = t;
t = t.right;

不能理解l=t;前面的l.right = t不就是被覆盖掉了吗?

黄舟黄舟2765 hari yang lalu387

membalas semua(2)saya akan balas

  • ringa_lee

    ringa_lee2017-04-18 09:53:27

    Ini hanyalah dua rujukan l dan t yang bergerak:

    1. 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

    2. 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

    3. l = t, l ditukar kepada titik kepada b, t kekal tidak berubah dan mata kepada b

    4. 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

    balas
    0
  • ringa_lee

    ringa_lee2017-04-18 09:53:27


    l = t;
    dianggap sebagai:
    l = l.kanan;
    Pergerakan penuding memudahkan satu lelaran.

    balas
    0
  • Batalbalas