青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

ACM___________________________

______________白白の屋
posts - 182, comments - 102, trackbacks - 0, articles - 0
<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用鏈接

留言簿(24)

隨筆分類(332)

隨筆檔案(182)

FRIENDS

搜索

積分與排名

最新隨筆

最新評論

閱讀排行榜

評論排行榜

Splay Tree 介紹

Posted on 2010-11-12 11:13 MiYu 閱讀(2146) 評論(1)  編輯 收藏 引用 所屬分類: ACM_資料ACM ( 數據結構 )ACM (Splay Tree)
MiYu原創, 轉帖請注明 : 轉載自 ______________白白の屋    

 

伸展樹(Splay Tree)是一種二叉排序樹,它能在O(log n)內完成插入、查找和刪除操作。它由Daniel Sleator和Robert Tarjan創造。它的優勢在于不需要記錄用于平衡樹的冗余信息。在伸展樹上的一般操作都基于伸展操作。
查找樹的相關知識
  各種查找樹存在不足。比如:對于一個有n個節點的平衡樹,雖然最壞情況下每次查找的時間復雜度不會超過O(logn),但是如果訪問模式不均勻,平衡樹的效率就會受到影響。此外,它們還需要額外的空間來存儲平衡信息。 
  這些查找樹的設計目標都是減少最壞情況下單次操作時間,但是查找樹的典型應用經常需要執行一系列的查找操作,此時更關心的性能指標是所有這些操作總共需要多少時間。對于此類應用,更好的目標就是降低操作的攤平時間,此處的攤平時間是指在一系列最壞情況的操作序列中單次操作的平均時間。獲得攤平效率的一種方法 就是使用“自調整”的數據結構。 
  和平衡的或是其它對結構有明確限制的數據結構比起來,自調整數據結構有以下幾個優點: 
  1、從攤平角度而言,它們忽略常量因子,因此絕對不會比有明確限制的數據結構差。而且由于它們可以根據使用情況進行調整,于是在使用模式不均勻的情況下更加有效。 
  2、由于無需存儲平衡或者其它的限制信息,它們所需的空間更小。 
  3、它們的查找和更新算法概念簡單,易于實現。 
  當然,自調整結構也有潛在的缺點: 
  1、它們需要更多的局部調整,尤其是在查找期間。(那些有明確限制的數據結構僅需在更新期間進行調整,查找期間則不用) 
  2、一系列查找操作中的某一個可能會耗時較長,這在實時應用程序中可能是個不足之處。
伸展樹存在的意義
  假設想要對一個二叉查找樹執行一系列的查找操作。為了使整個查找時間更小,被查頻率高的那些條目就應當經常處于靠近樹根的位置。于是想到設計一個簡單方法, 在每次查找之后對樹進行重構,把被查找的條目搬移到離樹根近一些的地方。splay tree應運而生。splay tree是一種自調整形式的二叉查找樹,它會沿著從某個節點到樹根之間的路徑,通過一系列的旋轉把這個節點搬移到樹根去。
已知重構方法與伸展樹的重構方法
  先前,已經存在兩種重構方法: 
  1、單旋:在查找完位于節點x中的條目i之后,旋轉鏈接x和其父節點的邊。(除非x就是樹根) 
  2、搬移至樹根:在查找完位于節點x中的條目i之后,旋轉鏈接x和其父節點的邊,然后重復這個操作直至x成為樹根。 
  splay tree的重構方法和搬移至樹根的方法相似,它也會沿著查找路徑做自底向上的旋轉,將被查找條目移至樹根。但不同的是,它的旋轉是成對進行的,順序取決于查找路徑的結構。為了在節點x處對樹進行splay操作,我們需要重復下面的步驟,直至x成為樹根為止: 
  1、第一種情況:如果x的父節點p(x)是樹根,則旋轉連接x和p(x)的邊。(這種情況是最后一步) 
  2、第二種情況:如果p(x)不是樹根,而且x和p(x)本身都是左孩子或者都是右孩子,則先旋轉連接p(x)和x的祖父節點g(x)的邊,然后再旋轉連接x和p(x)的邊。 
  3、第三種情況:如果p(x)不是樹根,而且x是左孩子,p(x)是右孩子,或者相反,則先旋轉連接x和p(x)的邊,再旋轉連接x和新的p(x)的邊。 
  在節點x處進行splay操作的時間是和查找x所需的時間成比例的。splay操作不單是把x搬移到了樹根,而且還把查找路徑上的每個節點的深度都大致減掉了一半。
伸展樹(Splay Tree)支持的操作
  具體操作包括: 
  1、access(i,t):如果i在樹t中,則返回指向它的指針,否則返回空指針。為了實現access(i,t),可以從樹t的根部向下查找i。如果 查找操作遇到了一個含有i的節點x,就在x處進行splay操作,并返回指向x的指針,訪問結束。如果遇到了空指針,表示i不在樹中,此時就在最后一個非 空節點處進行splay操作,然后返回空指針。如果樹是空的,將忽略掉splay操作。 
  2、insert(i,t):將條目i插入樹t中(假設其尚不存在)。為了實現insert(i,t),首先執行split(i,t),然后把t換成一個由新的包含有i的根節點組成的樹,這個根節點的左右子樹分別是split返回的樹t1和t2。 
  3delete(i,t):從樹t中刪除條目i(假設其已經存在)。為了實現delete(i,t),首先執行access(i,t),然后把t換成其左子樹和右子樹join之后的新樹。 
  4、join(t1,t2):將樹t1和t2合并成一棵樹,其中包含之前兩棵樹的所有條目,并返回合并之后的樹。這個操作假設t1中的所有條目都小于t2 中的條目,操作完成之后會銷毀t1和t2。為了實現join(t1,t2),首先訪問t1中最大的條目i。訪問結束之后,t1的根節點中包含的就是i,它 的右孩子顯然為空。于是把t2作為這個根節點的右子樹并返回完成之后的新樹即可實現join操作。 
  5、split(i,t):構建并返回兩棵樹t1和t2,其中t1包含t中所有小于等于i的條目,t2包含t中所有大于i的條目。操作完成之后銷毀t。為 了實現split(i,t),首先執行access(i,t),然后根據新根節點中的值是大于還是小于等于i來切斷這個根節點的左鏈接或右鏈接,并返回形 成的兩棵樹。 
  另外insert和delete方法有更好的實現,時間復雜度更小: 
  1、insert(i, t):查找i,把遇到的空指針替換成一個含有i的新節點,然后再在新節點處對樹進行splay操作。 
  2delete(i, t):查找含有i的節點,設此節點為x,其父節點為y。把x的左右子樹合并之后替換掉x,然后再從y處進行splay操作。
伸展樹的優勢
  由于Splay Tree僅僅是不斷調整,并沒有引入額外的標記,因而樹結構與標準BST沒有任何不同,從空間角度來看,它比Treap、Red-Black Tree、AVL要高效得多。因為結構不變,因此只要是通過左旋和右旋進行的操作對Splay Tree性質都沒有絲毫影響,因而它也提供了BST中最豐富的功能,包括快速的拆分和合并(這里指的是將原樹拆分成兩棵子樹,其中一棵子樹所有節點都比另一子樹小,以及它的逆過程),并且實現極為便捷。這一點是其它結構較難實現的。其時間效率也相當穩定,和Treap基本相當

Feedback

# re: Splay Tree 介紹  回復  更多評論   

2010-12-03 01:44 by flagman
splay tree到是KISS原則在數據結構設計中很好的體現。

其實Rob Pike在Notes on c programming中明確提出過,算法和數據結構的設計的首要原則是盡量保持簡單,在他看來數組、鏈表、哈希表、二叉樹足以提供大多數的應用的設計需求。而splay tree就是基于二叉樹的簡單改進,相比較紅黑樹復雜實現,而且攤還分析后的結果也不錯。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久阴道视频| 久久黄金**| 国产精品乱码一区二区三区| 鲁大师成人一区二区三区| 亚洲图片欧洲图片av| 夜夜狂射影院欧美极品| 在线视频欧美日韩精品| 一区二区三区国产盗摄| 亚洲欧美日韩国产精品| 久久精品99无色码中文字幕| 久久精品2019中文字幕| 欧美激情一二区| 国产精品久久久久久久9999| 国产主播一区二区三区| 亚洲国产综合在线| 久久久999精品免费| 亚洲日本视频| 亚洲女ⅴideoshd黑人| 久久久久久久久久久成人| 国产精品va在线播放| 91久久精品国产91性色| 久久人91精品久久久久久不卡| 亚洲国产小视频在线观看| 日韩视频中文字幕| 久久精品理论片| 欧美深夜福利| 日韩小视频在线观看| 免费视频久久| 久久久久久尹人网香蕉| 国产一区二区成人| 久久精品男女| 亚欧美中日韩视频| 国产欧美三级| 久久av最新网址| 久久久久久国产精品mv| 国产主播一区二区三区四区| 久久久久99| 久久人人精品| 夜夜嗨av一区二区三区中文字幕| 亚洲电影成人| 欧美先锋影音| 久久精品国产一区二区三区| 久久精品综合一区| 亚洲久久成人| 亚洲一品av免费观看| 国产一区视频在线看| 亚洲国产精品成人久久综合一区 | 一本一道久久综合狠狠老精东影业| 另类激情亚洲| 欧美三级免费| 久久免费视频一区| 欧美日韩精品免费在线观看视频| 亚洲一区中文字幕在线观看| 久久精品国产96久久久香蕉| 亚洲日本成人女熟在线观看| 亚洲二区在线| 亚洲一区二区三区免费视频| 尤物精品在线| 亚洲一区在线看| 亚洲国产视频直播| 欧美一级理论片| 亚洲网站在线播放| 欧美精品v日韩精品v国产精品 | 亚洲日本成人网| 欧美与欧洲交xxxx免费观看| 一区二区三区欧美| 欧美极品欧美精品欧美视频| 麻豆精品视频在线观看| 国产一区二区三区精品久久久| 亚洲另类自拍| 一区二区三区福利| 美女脱光内衣内裤视频久久网站| 久久成人资源| 国外精品视频| 久久精品综合一区| 亚洲国产精品一区制服丝袜 | 亚洲啪啪91| 亚洲精品欧美一区二区三区| 欧美激情一区在线| 亚洲人成人77777线观看| 99在线观看免费视频精品观看| 欧美久久综合| 亚洲免费在线精品一区| 久久综合九色99| 99热免费精品| 国产一区二区在线观看免费| 午夜视频在线观看一区二区三区| 欧美视频免费在线| 欧美一区二区观看视频| 亚洲精品国精品久久99热| 亚洲午夜久久久| 亚洲电影在线免费观看| 欧美啪啪成人vr| 久久精品视频在线| 一区二区高清| 亚洲高清免费在线| 女同一区二区| 久久精品麻豆| 性亚洲最疯狂xxxx高清| 亚洲免费av观看| 亚洲福利久久| 欧美国产日韩视频| 欧美中文字幕| 亚洲午夜久久久| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 国产午夜精品一区二区三区视频 | 欧美了一区在线观看| 久久一区二区三区四区| 久久久噜噜噜久久中文字幕色伊伊 | 免费美女久久99| 欧美影片第一页| 亚洲欧美视频在线观看| 亚洲视频日本| 亚洲欧美在线视频观看| 欧美一区在线视频| 久久久综合精品| 欧美成人一区在线| 在线一区观看| 欧美一区二区三区的| 欧美中文字幕在线播放| 欧美在线一区二区| 欧美成人精品高清在线播放| 欧美jizz19性欧美| 国产精品高潮在线| 国产手机视频一区二区| 亚洲久久成人| 久久精品系列| 亚洲国产精品一区在线观看不卡| 亚洲视频精选| 欧美成人精品三级在线观看| 国产精品激情偷乱一区二区∴| 国产一区二区按摩在线观看| 99国产精品国产精品久久| 欧美一区=区| 一本色道久久综合狠狠躁的推荐| 久久精品亚洲一区| 国产日韩欧美精品综合| 一本色道婷婷久久欧美| 欧美成在线视频| 欧美有码在线观看视频| 国产精品一区二区在线观看网站| 亚洲国产欧美一区二区三区久久| 欧美一区视频在线| 亚洲理伦在线| 欧美新色视频| 一区二区三区高清视频在线观看| 美日韩丰满少妇在线观看| 亚洲欧美在线另类| 国产毛片一区| 亚洲欧洲av一区二区三区久久| 91久久精品网| 欧美激情影院| 欧美日韩日本视频| 亚洲午夜日本在线观看| 亚洲一级片在线观看| 国产日本欧美一区二区三区| 性感少妇一区| 蜜臀99久久精品久久久久久软件| 狠狠久久婷婷| 亚洲精品一二区| 国产精品久久久久aaaa| 久久久之久亚州精品露出| 美女在线一区二区| 一本大道久久精品懂色aⅴ | 亚洲乱码一区二区| 亚洲福利视频网| 欧美性事在线| 亚洲国产欧美在线人成| 欧美日本三级| 欧美激情按摩| 国产视频一区二区三区在线观看| 久久人人超碰| 国产精品永久入口久久久| 狼人社综合社区| 国产免费观看久久黄| 欧美激情亚洲一区| 国产日韩欧美精品在线| 亚洲精品一二三区| 在线成人小视频| 欧美在线精品免播放器视频| 日韩视频一区二区| 鲁大师成人一区二区三区| 久久精品国亚洲| 国产一区免费视频| 午夜精品久久久99热福利| 亚洲欧美国产精品va在线观看 | 午夜精品久久久| 亚洲一线二线三线久久久| 欧美视频在线不卡| 一区二区三区四区国产| 亚洲日本欧美| 欧美精品一区二区三区久久久竹菊| 久久久久久婷| 狠狠干综合网| 亚洲丁香婷深爱综合| 伊人久久大香线蕉综合热线| 午夜在线一区二区| 亚洲二区免费| 亚洲欧美日韩网| 韩国av一区二区三区|