最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Splay學習筆記

2023-03-09 23:29 作者:SPST清嶼市第一中學  | 我要投稿

Splay是一個二叉平衡樹,可以維護序列,支持在其中插入和刪除。

關鍵操作:rotate,即旋轉,可以更換子樹的根。分為左旋和右旋。splay通過不斷地將新加入的節(jié)點旋轉到根來保證期望深度為log。經(jīng)過發(fā)展,rotate函數(shù)在代碼內(nèi)已經(jīng)非常的簡潔,將左旋和右旋合并為一個函數(shù)(關鍵在于用k存儲x為y的左兒子還是右兒子,運用異或表示“另一個兒子”)。rotate更新父母和孩子的順序:zy->zx,xa->ya,yx->xy,要牢記。旋轉的過程中平衡樹的中序遍歷是不變的。

splay函數(shù)是核心操作。splay(x,k)表示把x旋轉到k的下面。k一般是0或者根節(jié)點。splay過程中關注x的父親(y)和y的父親(z)。如果xyz在一條直線,則先旋轉y再轉x。否則轉兩次x。不這樣做會被構造數(shù)據(jù)卡掉。

splay的節(jié)點可以維護標記。像線段樹那樣下傳即可。pushdown在遞歸前必須寫。pushup在函數(shù)結尾寫。注意pushup的順序。該pushdown的時候一定要pushdown。

insert的時候,初始時要滿足堆的性質(zhì)。如果題目中的操作會改變堆的性質(zhì),可以隨便插。如果不會改變。如《郁悶的收納員》,不管怎樣都會滿足堆的性質(zhì),還會利用到它,則要保證插入順序。所以盡量保證堆的性質(zhì)。

getk時先pushdown!注意跳右兒子時先改k再改nw。

插入?yún)^(qū)間,先找到插入位置的后繼,然后將插入位置旋轉到根,后繼旋轉到根下面,左兒子便是空的,可以直接插入你構造的區(qū)間的二叉樹。刪除區(qū)間同理,不過要找到兩端的前驅(qū)后繼。為了防止越界,可以再0、n+1的位置設置“哨兵”,值為極值。不過處理的時候要特別留意它們。



Splay學習筆記的評論 (共 條)

分享到微博請遵守國家法律
彝良县| 黄浦区| 临泉县| 乌兰县| 安多县| 桐庐县| 自贡市| 驻马店市| 新绛县| 南皮县| 夹江县| 沙湾县| 高台县| 肇州县| 垦利县| 西青区| 金沙县| 深水埗区| 广灵县| 游戏| 曲水县| 时尚| 临邑县| 金山区| 镇雄县| 晴隆县| 洛扎县| 鲜城| 无为县| 阿图什市| 牙克石市| 咸丰县| 新化县| 青岛市| 中江县| 藁城市| 德令哈市| 上虞市| 璧山县| 彩票| 泰兴市|