1. 程式人生 > >談談splay的雙旋和單旋(其實扯淡部分比較多

談談splay的雙旋和單旋(其實扯淡部分比較多

單旋

其實時間複雜度什麼的我也不會算,好像一條鏈的話會被卡成O(n)。具體做法就是,如果要伸展上去的點在左兒子就右旋,在右兒子就左旋,比較好理解。

雙旋

起初看白書真的是沒有看懂雙旋和兩次單旋的區別所在,一直很奇怪,問了問LargeDumpling,聽說雙旋可以減少層數?手動模擬了一下鏈的情況,一開始把雙旋的順序搞錯了結果旋出來都是一條鏈。。。後來發現雙旋是要先旋父節點再旋當前點,這樣小小的換了一下順序之後,當鏈長在最小5的時候,將葉子節點旋上去的時候,就會顯示出降低層數的功效了。而如果單旋的話,旋出來還是一條鏈,只不過變了個樣子,我認為如果層數減少了的話,平均意義上的時間複雜度會比單旋更優,但是對於隨機資料,,沒測過,但是感覺會差不多。